MariaDB/MySQL中使用表级锁的存储引擎(例如MyISAM、Aria(MariaDB对MyISAM引擎的改进,前身是MyISAM))在读(select)、写操作(insert、delete、update、replace)上有优先级的概念。默认情况下,写操作的优先级高于读操作。注:不适用于InnoDB存储引擎。
以MyISAM为例。当有进程正在写MyISAM表的时候,又有新的读操作、写操作出现,则会先执行完所有的写操作,等写完后才会读表。实际上并非总是先执行完所有写操作,因为有系统变量max_write_lock_count控制最大写锁数量,当这些数量的写操作完成后会转为执行读操作。
所以,INSERT、LOAD DATA INFILE、UPDATE、REPLACE、DELETE语句都有LOW_PRIORITY关键字,用来降低对MyISAM存储引擎的写操作优先级,使得MariaDB先执行完所有的读操作后再执行写操作。而SELECT语句有HIGH_PRIORITY关键字,用来提高读操作的优先级。除了这两个关键字,还可以设置系统变量low_priority_updates=on来降低写操作优先级。
唯一需要注意的是,INSERT语句不仅有LOW_PRIORITY,也有HIGH_PRIORITY。当使用INSERT HIGH_PRIORITY语句时,表示禁用INSERT的并发插入行为。
回到Linux系列文章大纲:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
回到网站架构系列文章大纲:http://www.cnblogs.com/f-ck-need-u/p/7576137.html
回到数据库系列文章大纲:http://www.cnblogs.com/f-ck-need-u/p/7586194.html
转载请注明出处:http://www.cnblogs.com/f-ck-need-u/p/8907252.html
注:若您觉得这篇文章还不错请点击右下角推荐,您的支持能激发作者更大的写作热情,非常感谢!