众所周知,myisam是表级锁!能够提供非常快速的查询,但是更新一多,myisam表级锁导致查询极其缓慢!而有的应用苦于需要使用fulltext,不能更改存储引擎,这个时候,只能优化myisam表级锁!
几个方向仅供参考:
1.减少sql查询时间(把大sql拆分)
2.如果在从机,可以设置更新优先级:
三种方法:
2.1 --low-priority-updates启动参数,降低update的优先级,提升select的优先级
2.2 set low-priority=updates=1提升当前线程的优先级 ,提升当前线程的select优先级
2.3 可以在insert、update、delete语句中指定low_priority属性来主动降低优先级
3. 当某结果集较大,而又需要在大结果集做操作的时候,建议转换为临时表,释放表后,在临时表进行操作!(临时表的影响参数tmp_table_size和max_heap_table_size)
4. 开启并发插入concurrent_insert
0,表示不允许并发插入
1,表示当myisam没有空洞时候,允许一个(最多只能同时一个线程插入)线程在读的时候,进行插入
2,表示不管是否有空洞,都进行一个线程的在读的适合并发插入
转载于:https://blog.51cto.com/imysqldba/1304550