记录一次 group by 查询的优化
最近维护一个老系统,有一处查询非常慢,细细研究一番,优化了查询 sql。
该 sql 用来统计摄像机所有状态对应的数量,没加联合索引之前很慢,最后加了三个字段的联合索引优化到一秒左右。
check_day, camera_id, diagnosis_result
要注意,group by 的列也要加到组合索引里面去,这样查询才快。
1 | SELECT |
最近维护一个老系统,有一处查询非常慢,细细研究一番,优化了查询 sql。
该 sql 用来统计摄像机所有状态对应的数量,没加联合索引之前很慢,最后加了三个字段的联合索引优化到一秒左右。
check_day, camera_id, diagnosis_result
要注意,group by 的列也要加到组合索引里面去,这样查询才快。
1 | SELECT |
1 | CREATE TABLE `ty` ( |
1 | BEGIN; //第一步,开启事务1 |
1 | BEGIN; //第二步,开启事务2 |
数据库主从在实际使用之中,竟然由于各种各样的原因导致数据不一致,需要重新配置。
1 | SHOW MASTER STATUS; |
记录下 master_log_pos 的位置,后面需要用到。
1 | STOP SLAVE; |
1 | reset slave; |
1 | CHANGE MASTER TO master_host = '172.20.5.20', |
1 | START SLAVE; |
另外,测试环境也经常遇到由于表结构修改后不同步,导致数据同步出错,此时可以跳过错误的语句使得测试进行下去。
1 | stop slave; |
之前用 kettle 做过专网到公安网的数据同步,踩过一些坑,记录一下。
1、转换关联的 DB 连接可以右击设置为共享,那么新建其他转换时,就可以选中建好的连接。
2、数据库在修改过字段后,要清除 kettle 的数据库缓存,不然获取新字段的时候获取不了。
3、kettle 要设置字符编码,否则同步的时候数据会乱码。
4、数据同步时,获取更新字段,默认会包含 flagfield 要把这个字段删掉,否则报错。
5、数据同步时,要点击高级,选择操作的字段名为 flagfield。
6、kettle 的转换有时候同步不成功,例如新增的数据没有同步过去,但又不打印日志,很有可能是字段的约束问题导致的。可以新建一个转换重试。
7、新增/修改/删除的同步场景,用表输入 -> 合并记录 -> 数据同步即可
1 | package com.hdvon.iomp.visual.utils; |