MySQL的myisam解决并发读写解决方法MyISAM在读操作占主导的情况下是很高效的。可一旦出现大量的读写并发,同InnoDB相比,MyISAM的效率就会直线下降,而且,MyISAM和InnoDB的数据存储方式也有显著不同:通常,在MyISAM里,新数据会被附加到数据文件的结尾,可如果时常做一些 UPDATE,DELETE操作之后,数据文件就不再是连续的,形象一点来说,就是数据文件里出现了很多洞洞,此时再插入新数据时,按缺省设置会先看这些洞洞的大小是否可以容纳下新数据,如果可以,则直接把新数据保存到洞洞里,反之,则把新数据保存到数据文件的结尾。之所以这样做是为了减少数据文件的大小,降低文件碎片的产生。但InnoDB里则不是这样,在InnoDB里,由于主键是cluster的,所以,数据文件始终是按照主键排序的,如果使用自增ID做主键,则新数据始终是位于数据文件的结尾。

了解了这些基础知识,下面说说MyISAM几个容易忽视的配置选项:

concurrent_insert:

通常来说,在MyISAM里读写操作是串行的,但当对同一个表进行查询和插入操作时,为了降低锁竞争的频率,根据concurrent_insert的设置,MyISAM是可以并行处理查询和插入的:

当concurrent_insert=0时,不允许并发插入功能。

当concurrent_insert=1时,允许对没有洞洞的表使用并发插入,新数据位于数据文件结尾(缺省)。

当concurrent_insert=2时,不管表有没有洞洞,都允许在数据文件结尾并发插入。

这样看来,把concurrent_insert设置为2是很划算的,至于由此产生的文件碎片,可以定期使用OPTIMIZE TABLE语法优化。

max_write_lock_count:

缺省情况下,写操作的优先级要高于读操作的优先级,即便是先发送的读请求,后发送的写请求,此时也会优先处理写请求,然后再处理读请求。这就造成一个问题:www.linuxidc.com一旦我发出若干个写请求,就会堵塞所有的读请求,直到写请求全都处理完,才有机会处理读请求。此时可以考虑使用 max_write_lock_count:

max_write_lock_count=1

有了这样的设置,当系统处理一个写操作后,就会暂停写操作,给读操作执行的机会。

low-priority-updates:

我们还可以更干脆点,直接降低写操作的优先级,给读操作更高的优先级。

low-priority-updates=1

综合来看,concurrent_insert=2是绝对推荐的,至于max_write_lock_count=1和low-priority- updates=1,则视情况而定,如果可以降低写操作的优先级,则使用low-priority-updates=1,否则使用 max_write_lock_count=1。

mysql myisam 并发_MySQL的myisam解决并发读写解决方法相关推荐

  1. mysql中myisam和_MySQL中myisam和innodb的区别

    区别: 1.innodb支持事务,myisam不支持事务.innodb默认AUTOCOMMIT是开启的,每条SQL会默认封装成一个事务 2.innodb支持行级锁定,myisam支持表级锁定 3.in ...

  2. mysql 显示表情符号_mysql 支持emoji 表情字符的解决方法。

    1.utf8 字符集最多3个字符,而emoji表情字符是unicode大字符集,需要4个字节表示,所以utf8无法表示. mysql要存储emoji字符,需要设成utf8mb4字符集,意思就是utf8 ...

  3. mysql全模糊_MySQL文模糊检索问题的解决方法

    在 MySQL 下,在进行中文模糊检索时,经常会返回一些与之不相关的 记录,如查找 "-0x1.ebea4bfbffaacp-4%" 时,返回的可能有中文字符,却没有 a 字符存在 ...

  4. mysql ibdata1 压缩_MySQL ibdata1文件太大的解决办法

    在MySQL数据库中,如果不指定innodb_file_per_table=1参数单独保存每个表的数据,MySQL的数据都会存放在ibdata1文件里,时间久了这个文件就会变的非常大. 下面是参考网上 ...

  5. mysql (errcode 28)_MySQL出现Errcode:28错误提示解决办法

    mysql出现Error writing file \'xxx\'( Errcode:28)的原因有很多种,下面我来总结一些常用的关于引起Errcode:28错误原因与解决方法. 问题一,是log日志 ...

  6. mysql.sock 误删_MySQL sock 文件丢失被删除解决方法 雪剑无影

    Mysql有两种连接方式: (1),TCP/IP (2),socket 对mysql.sock来说,其作用是程序与mysqlserver处于同一台机器,发起本地连接时可用. 例如你无须定义连接host ...

  7. mysql 取 浮点运算_mysql 浮点型运算误差原因分析及解决方法

    在进行金融财务等数值运算时,请使用decimal 类型,不要使用float和double类型!因为decimal的精度最高 如下C#代码: float a = 0.65f; float b = 0.6 ...

  8. mysql存中文_mysql数据库存储中文数据的解决办法

    我在学习django中admin模块的时候,登录进入后台操作页面,输入中文数据,但保存之后全是乱码(全是"????????????"),然后就开始了解决问题之路. 1.首先百度搜索 ...

  9. mysql没有配置文件_MySQL没有my.cnf配置文件如何解决

    安装了mysql却没有my.cnf配置文件是个很多新手都会遇到的问题.想必很多新手都经历到过这样的情景:准备修改mysql存储空间(datadir)等情况时,按着网上的教学去做,突然发现居然没有my. ...

最新文章

  1. HBuilder 的快捷键
  2. 初识Linux——菜鸟篇
  3. 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第六章——自编解析与答案
  4. 理解Flex itemRenderer(3)--通信
  5. php教学小结,php小结
  6. 软引用和弱引用的区别_强、软、弱、虚引用的区别和使用
  7. android studio管理依赖,Android Studio 中的 Gradle 依赖统一管理
  8. 一起谈.NET技术,.NET缓存机制探讨与比对
  9. tensorflow没有这个参数_内存频率越高越好?如果不看这个参数,内存频率再高也没有用...
  10. php.ini配置文件
  11. 数据分析 第三篇:数据特征分析(分布分析+帕累托分析)
  12. 安装windows server2008虚拟机
  13. 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(4)
  14. Linux互信及互信失效问题
  15. QComboBox选项置灰、不可选择、文本颜色(汉字颜色)
  16. 三八节活动答题运营复盘
  17. css view a if属性,uni-app学习笔记(2)view属性控制css样式
  18. 手持式超声波气象站旱作节水灌溉
  19. 看完张一鸣、王兴、雷军的600条语录,整理出给年轻人的50条建议!
  20. 基于 Web SDK 实现视频通话场景 | 声网 SDK 教程

热门文章

  1. Linux查看公网IP
  2. 食品科学系-软件开发
  3. 网页设计作业学生网页课程设计作业成品DIV+CSS-中国传统文化
  4. linux - 搭建部署ftp服务器
  5. php 用 jSignature手写签名保存图片到本地
  6. mongodb启动不了常见异常
  7. Temporal线上部署
  8. Temporal Pyramid Network(TPN 笔记)
  9. 风险投资在中国(一)[整理]
  10. dos命令-mklink-软链接(符号链接)、硬链接、目录链接的区别