作者回复: 1. 虽然理论上是核数的2倍左右最好,但是现在很多人把MySQL创建在虚拟机上,就分1~2个核,我怕那么写,有同学会认为innodb_thread_concurrency建议设置成4。。
2. 空间满本身是不会导致连不上的。但是因为空间满,事务无法提交,可能会导致接下来外部事务重试,新重试的业务还是堵在提交阶段,持续累积可能会把连接数用满
作者回复: 对,但是这个方法本质上是“内部把一段时间内的统计信息存在这里”,只是“定期来取”,去到的是“一段时间内的信息”
而前面的几种方法,都是“检测那个时间点的信息”
作者回复: 是这样的,我们说DDL,一般是指加减索引,增加字段在最后一列,这种操作…
作者回复: 很好的实践分享。
是不是还有配套一些服务的RT时间的报告?
毕竟echo是一个比较轻量的调用,正确率可能比实际业务调用的正确率高
作者回复: 啊 主键冲突为啥没关系?
是这样的,这两个语句如果同时执行,那么在主库和备库上就都是“insert行为”
写到binlog里面就都是Write rows event
这个冲突就会导致主备同步停止哦
作者回复: 好问题
比如两个表刚开始都是空表,
然后第一个语句执行
insert into mysql.health_check(id, t_modified) values (1, now()) on duplicate key update t_modified=now();
就会两边各写入一个insert语句的binlog日志,传到对面就导致同步停止了
作者回复: “因为内存中的页可能是分散的,可能不构成一个完成的索引结构,可能不能利用b+树叶子节点的路由功能。”
这里不对哈
放在内存里是b+树组织的,可以利用b+树叶子节点的路由功能的
作者回复: 有DBA就不要自己去修改线上的参数啦
如果说观察,一个比较好的管控系统,是会能够让你看到这些值的
如果没有,就让dba给你一份线上的my.cnf的配置,然后你在测试环境自己用这个配置启动实例来观察
作者回复: 👍,这里的“超时监控”,是怎么得到的?
是单独有命令检测,还是去看业务请求的返回时间?
作者回复: 这个是框架做的吧?
我知道有些框架喜欢用
set autocommit=0, 表示开启事务
set autocommit=1,表示提交事务
虽然也对,
但比较建议用begin 和 commit
作者回复: 比如两个表刚开始都是空表,
然后第一个语句执行
insert into mysql.health_check(id, t_modified) values (1, now()) on duplicate key update t_modified=now();
就会两边各写入一个insert语句的binlog日志,传到对面就导致同步停止了
作者回复: 如果set sql_log_bin=0, 就不记录binlog,就不会给这个事务分配gtid。
你说得对,drop列是很麻烦的,尽量不做。毕竟业务代码直接无视这个列就好了。。