通过设置innodb_thread_concurrency,可以控制最大并发线程数。(注意并发线程数,与最大连接数,是两回事)
进入锁等待的线程,不会占用并发查询数。

健康监测——select

通过执行select 1; 来判断数据库的进程是否还在。

健康监测——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请求的时间。
但是这些统计,会消耗性能。