将复杂SQL拆分为多个小SQL,避免大事务。简单的SQL容易使用到MySQL的QUERY CACHE,减少锁表时间,特别是MyISAM表,且可以使用多核CPU。合并对表的多次alter操作:将对表的多次alter操作合并为一次操作,以减少锁表时间对线上业务的影响。避免使用高级特性:避免使用存储过程、触发器、视图、自定义函数等高级...
在MySQL中,普通的select语句是不需要加锁的,而insert、update、delete以及select ... for update等语句需要加X锁,select ... lock in share mode等语句会加S锁。图片展示 以下是一些关于X锁和S锁在MySQL中应用的图片示例:这些图片展示了在MySQL中如何对表进行加锁和解锁操作,以及加锁后其他会话...
等待 update 结束,查看 row_examined,发现其刚好是表大小:那我们怎么准确的这个倍数呢?一种方法是靠经验:update 语句的 where 中会扫描多少行,是否修改主键,是否修改唯一键,以这些条件来估算系数。另一种方法就是在同样结构的较小的表上试验一下,获取倍数。这样,我们就能准确估算一个大型 update...
查询结果数据量太大有两种常见情况:一是直查的表数据量太大(如千万级),即使建了索引,索引文件也会很大,查询速度自然会慢;二是联表笛卡尔积量太大。对于第一种情况,建议对表采用分表分区;对于第二种情况,建议进行 SQL 拆分优化。锁竞争 InnoDB 存储引擎的表使用行锁,每次锁定一行。如果有一...
本地监听地址 openreplicator.server.hostname=127.0.0.1 openreplicator.server.port=13111 需要复制的表信息 openreplicator.filter.rule=replicate-do-table:test.demo.3. 运行OpenReplicator 在命令行中运行OpenReplicator:java -cp “/path/to/open-replicator.jar:/path/to/mysql-connector-...