• MySQL并发调优和IO调优


    一.myisam的IO调优

    1.myisam通常在每次写入后把索引的改变刷写到磁盘上.所以批处理通常会更快点.做到这点,可以通过LOCK TABLES,他可以把写入控制到对表解锁.

    还可以用delay_key_write变量来延迟索引的写入,如果使用他,只有在表关闭的时候写入键缓存.它有以下选项:

    OFF 每次索引改变后,写入磁盘
    ON  延迟键开启,但只针对使用DELAY_KEY_WRITE选项创建的表有效
    ALL 所有myisam表都是用延迟键写入

    延迟键开启,通常不能带来性能上的飞跃,在数据量小,读取命中率较好并且写入命中率较差的时候效果最好.但也带来一些负面影响
    a.服务器崩溃并且数据没被刷写到磁盘上,索引就会损坏.
    b.mysql需要更多的时间来关闭表
    c.FLUSH TABLES可能需要更多的时间
    d.查询要等待键缓存区释放空间而停止

    2.myisam配置从损坏中恢复

    myisam_recover(命令行参数是myisam_recover_options)控制了myisam查找和修复表的方式

    有以下值:
    DEFAULT:默认或不设置,只恢复
    BACKUP:把数据文件备份到.BAK文件中
    FORCE:即使.MYD丢失数据多于一行,恢复也会继续
    QUICK:除非有删除的数据才会跳过恢复.

    可以使用多重设置,中间用逗号隔开,比如BACKUP,FORCE

    二.innodb的IO调优
    1.innodb日志文件总体大小由innodb_log_file_size和innodb_log_files_in_group控制,并且他们对写入影响极大.默认值分别是5m和10m.

    2.控制缓冲大小的变量是innodb_log_buffer_size,默认是1m,推荐设置值是1m到8m

    3.innodb_flush_method可以配置innodb实际与文件系统进行交互的方式

    4.配置表空间
    innodb_data_file_path定义表空间文件
    innodb_data_home_dir定义在目录中

    innodb_data_file_path = ibdata1:1G;ibdata2:1G;ibdata3:1G
    上面的例子在3个文件中创建了3GB表空间

    下面的例子限制延伸文件最大为2GB
    ...ibdata3:1G:autoextend:max:2G

    5.使用innodb_file_per_table使每个表使用一个文件,以表名.ibd保存数据.但坏处是表空间的碎片都放在了.ibd中,这对于很小的表尤其会成为一个问题.因为innodb的页面大小是16kb,即使表只有1kb,也会需要至少16kb的磁盘空间



    三.myisam的并发调优
    1.可以使用concurrent_insert变量配置myisam的并发插入行为,
    0 不允许并发插入
    1 默认值,只要表中没有空缺,允许并发插入
    3 强制并发插入到表尾


    四.innodb并发调优
    1.控制并发的的方式是使用innodb_thread_concurrency变量,它限制了有多少线程进入内核.0为不限制
    并发 = cpu数量*磁盘数量*2

    2.innodb_commit_concurrency决定了某一时刻有多少线程提交,但innodb_thread_concurrency被设置为一个较小值,造成大量线程不佳时,可以设置该值

  • 相关阅读:
    the error about “no such file or directory”
    Unable to Distribute in Xcode5?
    第一次连接数据库mongodb踩的坑
    在Mac下安装mongodb
    sudo brew install mongodb报错
    nodemon 热更新
    npm install 之前做的事
    JS事件委托应用场景
    解决CDN传统方法引入Iview icon 不显示问题
    React 入门
  • 原文地址:https://www.cnblogs.com/itfenqing/p/4429404.html
Copyright © 2020-2023  润新知