通过设置innodb_thread_concurrency,可以控制最大并发线程数。(注意并发线程数,与最大连接数,是两回事)
进入锁等待的线程,不会占用并发查询数。
健康监测——select
健康监测——update(推荐)
- 创建一个health_check表,表中存储一个id字段,一个update_time字段。
- id字段存储实例的serverId。(防止主从库中id相同,互为主备的两个实例之间update语句循环执行)
- update_time字段用来定期更新,以执行更新SQL。
写操作既可以判断并发线程数是否已满,还可以判断binlog是否已满。
缺点:MySQL问题的发现,依赖外部轮询。经常会出现第一次轮询时没问题,第二次轮询时问题已经发生,导致灾备切换有延迟。(根本原因是问题的发现,还是靠外部)
健康监测——内部统计
MySQL5.6之后提供的performance_schema库,记录了一系列的内部统计功能。其中表file_summery_by_event_name,可以统计每次IO请求的时间。
但是这些统计,会消耗性能。
