mysql无主键无索引表导致同步延迟

mysql无主键无索引表导致同步延迟,第1张

Mysql主从同步延迟发生 现象: pos一直保持不变,并且behind一直在增加, 备库执行: SQL thread State列状态如下: 代表 线程已经从中继日志读取一个事件,可以对事件进行处理了。 查看binlog: 查看表结构发现没有主键索引。 延迟发生原因: 首先mysql主从是基于行的复制。 举例解释下什么是基于行的复制,假设主库执行以下sql删除了表A中的100条数据: 这时mysql会把这个SQL按照每条记录,拆分成100条delete SQL在备库上执行,mysql这么做的目的也是最大程度的保证同步数据的可靠性。 但是可靠性的提升伴随而来的便是日志量的增多,同步过程会占用大量带宽。 其次,该表即无主键,也没有索引。 假设还是以上对A表的删除 *** 作,拆成的100条delete SQL传递并且在备库执行,因为表即无主键,也没有索引,所以每执行一次都要做全表扫描才能定位到要删除的那一条数据,可想而知同步效率会低很多。 解决方案: 1 表设计时就要有主键; 2 如果延迟已经发生,并且表不是特别大的情况下,在备库上为该表创建索引或是主键。

mysqlunionall无法走索引11 27

1. like %%失效。 方案:改为like %,只写后面的%就能走索引。

2. 虽然有索引,但是查询条件没有索引列或者order by 排序没有索引列。 方案:让查询条件有索引列

3. 索引列存在null值的情况。 方案:索引列如果没有值,则给空字符串或者数字的0,总之就是不要设置null

mysql优化无索引查询:SQL>CREATE TABLE test_tab (id INT,name VARCHAR(10),age INT,val VARCHAR(10)。

1、对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引。

2、应尽量避免在 where子句中使用!=或<> *** 作符,否则将引擎放弃使用索引而进行全表扫描。

3、应尽量避免在 where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描。

运行mysql安装文件:

按 Next,然后选择安装方式,有 "Typical(默认)"、"Complete(完全)"、"Custom(用户自定义)",选择第二个选项 "Custom",下一步, MySQL Server (mysql服务器), Developer Components (开发者部分), Debug Symbols (调试符号), Server data files (服务器数据文件) 默认。

改变安装路径;原路径是"C:\Program Files\MySQL\MySQL Server 5.5\",也可以修改为:"E:\Program Files\MySQL Server 5.5\"。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8682455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存