您的位置:首页 > 数据库 > MySQL

Mysql 1秒200笔GPS数据批量写入优化

2017-03-09 12:35 495 查看
针对1100台车上传GPS数据实测,1s 200笔GPS数据批量写入,平均每小时300M日志,每小时1000w笔GPS数据,发现IO负载过高







一批次100笔(1秒2批次)GPS数据批量写入耗时







慢查询: mysqldumpslow /var/lib/mysql/slow_query.log > /var/lib/mysql/2.log

vi 2.log






1.优化:mysql优化



2.优化:使用sharding-jdbc分表

按照车辆的bustid分表,每辆车的gp数据存储至一个表

   public  ShardingDataSource getShardingDataSource() {

        if(shardingDataSource == null) {

        DataSourceRule dataSourceRule = new DataSourceRule(createDataSourceMap()); 

            List<String> actualTables = Arrays.asList("mt_gpsmng_151101102631931","mt_gpsmng_151101113910723");

            TableRule orderTableRule = TableRule.builder("mt_gpsmng").actualTables(actualTables).dataSourceRule(dataSourceRule).build();

            ShardingRule shardingRule = ShardingRule.builder().dataSourceRule(dataSourceRule).tableRules(Arrays.asList(orderTableRule))

                    .tableShardingStrategy(new TableShardingStrategy("bustid", new GPSModuloTableShardingAlgorithm())).build();

            shardingDataSource = new ShardingDataSource(shardingRule);

        }

         return shardingDataSource;

     }

  

3.优化后,top查询

load average 负载较低,wa 磁盘读写等待降到0.1



4.优化后:iotop查找耗损IO的进程



5.优化后:正常情况下,mysql 一批次(1秒2批次)100笔数据10ms左右搞定

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: