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左右搞定
一批次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左右搞定
相关文章推荐
- Mysql 批量写入数据 性能优化
- php从memcache读取数据再批量写入mysql的方法
- 程序对批量数据写入数据库的优化--引入Redis并通过定时器来触发
- MySQL写入插入数据优化配置
- mysql 批量插入数据(INNODB)优化
- MySQL 批量插入数据优化
- MYSQL开发性能研究之批量插入数据的优化方法
- php从memcache读取数据再批量写入mysql的方法
- 并发链接,大批量写入数据的mysql插入优化
- 程序对批量数据写入数据库的优化--引入Redis并通过定时器来触发
- mysql 批量插入数据优化
- 存储过程写入大批量数据,用于测试mysql查询优化
- python数据批量写入ScrolledText的优化方法
- php从memcache读取数据再批量写入mysql的方法
- php从memcache读取数据再批量写入mysql的方法
- php从memcache读取数据再批量写入mysql的方法
- MySQL写入插入数据优化配置
- Java实现批量向mysql写入数据的方法
- mysql LOAD语句批量录入数据
- mysql写入数据库后,数据出现乱码问题的解决方案