决定MyISAM的Select&Insert&Update并发性能的参数

来源:互联网 发布:数据采集费报销内容 编辑:程序博客网 时间:2024/06/02 07:25
决定MyISAM的Select&Insert&Update并发性能的参数

concurrent_insert  通过查看 show variables like '%concurrent%' 


0: 表示不能并发,Select, insert之间只能串行执行 


1:表中有空洞(删除记录留下的)情况下,阻塞insert; 表中无空洞的情况下,Insert并发插入表尾 


2:无论是否有空洞都并发插入表尾 


默认情况下, 这个值是1, 所以在既有Select又有insert的情况下,很容易就出现了近似串行的执行场景。 


例如:  

session 1正在执行一条select语句,需要3秒 

session 2未等1执行完,就执行了一条insert, 那么这个insert会等到session 1执行完才能执行(有空洞),同时这个session 2锁住表 

session 3也是一条select语句,发现表被session2锁住了,只能等待 

session 4也是select语句,同样等待 

session 5是insert语句,继续等待 

直到session1完成后, session2也完成后, 3,4才能执行,假设3,4也要3秒,那么session 5继续等待,其他session又开始等待。 



结论就是, 如果那条语句执行的时间稍微长点, 同时又有insert的话,MyISAM表会非常容易变成串行执行。 



解决方法: 

1.  concurrent_insert=2  坏处就是delete的空洞永远都不去补回来了,浪费空间,浪费了cpu扫描 


2.  --low-priority-updates启用mysqld,让select有更高优先级 


3.  在语句中加上HIGH_PRIORITY, LOW_PRIORITY以定义优先级,让select赶在insert锁定之前执行
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 学习学不进去怎么办 小孩停不下来怎么办 小孩老爱玩不爱学习怎么办 小孩子不喜欢吃菜怎么办 孩子初中不爱学习怎么办 大学不爱学家长怎么办 小孩子不爱读书不听话怎么办 小孩不爱读书写字怎么办 一年级学生不爱学习怎么办 孩子练字怕累怎么办 孩子不愿意学英语怎么办 生了儿子 不喜欢 怎么办 养两个儿子的怎么办 看诗词记不住怎么办 经常读书记不住怎么办 孩子不爱记数字怎么办 考研学不进去怎么办 读了职高后悔怎么办 不喜欢看书的人怎么办 生的儿子不喜欢怎么办 孩子上网不回家怎么办 儿子不想读书了怎么办 中考体育考不好怎么办 小孩突然没礼貌怎么办 小孩读书记忆差怎么办 这几天不爱吃饭怎么办 读书读到不懂的怎么办 读书很多词不懂怎么办 看书看不进去怎么办 一年级小孩不喜欢读书怎么办 考研还不想学习怎么办 怎么吃还是瘦怎么办 要想读的书该怎么办 大人瘦不爱吃饭怎么办 大人不爱吃青菜怎么办 如果不想写作业怎么办 一年级不爱写作业怎么办 生气总打孩子怎么办 人爱喝酒怎么办才不改 俩岁半宝宝不吃饭怎么办 孩子高中不爱学习怎么办