【高性能MySQL第3版】第8章 优化服务器设置 下(小半)停

版权声明:高性能MySQL是第3版,注意mysql版本;很多博客都参考或者直接转载自网络,如果不方便被转载,看到请与我联系 https://blog.csdn.net/ma15732625261/article/details/82050510

8.5.2 MyISAM的i/o配置

myisam每次写操作后便把索引变更刷新磁盘

1、使用lock table 延迟写入直到解锁这些表,精确控制哪些写被延迟,何时

2、delay_key_write也可延迟索引写入,修改的键缓冲块直到表被关闭才刷新

     off:每次写操作后刷新键缓冲中的脏块到磁盘,除非lock tables锁定了

     on:打开延迟键写入,只对用delay_key_write选项创建的表有效

     all:all的myisam表都是有延迟写入

缺点:

1、很多写被延迟,可能需要费更长时间关闭表:等待缓冲刷新到磁盘

2、因为上 flush tables需要很长时间

3、键缓冲没有刷回去的脏块可能占用空间,导致从磁盘上读取新块无空间

myisam_recover:控制myisam如何寻找 修复错误

1、配置文件 命令行设置,通过show  variables like‘myisam_recover_options’查看

2、只有小的myisam表建议打开:通知mysql表打开时 检查是否损坏 且找到问题时修复 

    default:尝试修复如何被标记为崩溃或无标记为完全关闭的表

    backup:将数据文件的备份写到.BAK文件,以便随后进行检查

    force:即使.MYD文件中丢失的数据超过一行,也让恢复继续

    quick:除非有删除块,否则跳过恢复

如果有大堆myisam表,启动后用check tables 和repair tables命令来做

打开数据文件的内存映射访问:

    内存映射使myisam通过操作系统页面缓存访问.MYD文件,避系统调用开销

    通过myisam_use_mmap选项打开内存映射

8.6配置mysql并发

 

8.6.1InnoDB并发配置

innodb的“线程调度器”控制线程怎么进入内核访问数据,及在内核中一次可做哪些事

1、基本限制并发innodb_thread_concurrency:限制一次性可有多少线程进入内核,0不限制 使用更小的值更好,做实验确定

2、使用线程池

8.6.2myisam并发配置

删除和插入行:

  删除不会重整理整个表,行标记为删除,表中留下“空洞”,插入时可能利用这些空间,如果无空洞 插入表尾

myisam可边读取边并发追加新行:新插入数据不可见

设置concurrent_insert配置打开并发插入:否则不支持

  0:不容许,all插入对表加锁互斥

  1:默认值,表无空洞,容许并发插入

  2:mysql5.0,并发插入到表尾,如无线程从表读数据,新行放空洞里,更碎片化

可设置low_priority_updates让insert replace delete update优先级低于select,让select获取好的并发度

8.7基于工作负载的配置

配置服务器的一个目标:将其定制得符合特定的工作负载

熟悉你的服务器:用innotop监控,pt_query_digest创查询报告,创建processlist快照

8.7.1优化blob和text的场景

服务器不能再内存临时表中存储blob值

诶~我怎么写读书笔记算侵权吗?这是没有想到的,我还是自己看吧,不写了

猜你喜欢

转载自blog.csdn.net/ma15732625261/article/details/82050510
今日推荐