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

    xiaoxiao2021-03-25  119

    针对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左右搞定

    转载请注明原文地址: https://ju.6miu.com/read-10464.html

    最新回复(0)