本文介绍了MySQL中MyISAM存储引擎的锁规则,并介绍如何使用LOW_PRIORITY降低写操作的优先级。
MyISAM锁规则
MyISAM存储引擎的读锁和写锁是互斥的,读操作执行时产生读锁,写操作执行前产生写锁,写操作检测到存在读锁,则会等待读锁释放后执行,后继操作检测到存在写锁,则会等待写锁释放后执行。
LOW_PRIORITY
如果在SQL中指定LOW_PRIORITY,可使写操作的优先级降低,相当于原来的写锁在写操作执行前就会产生,当指定LOW_PRIORITY后,写锁在写操作执行时才会产生,因此可降低读操作的等待时间。
设置优先级副作用
虽然修改LOW_PRIORITY可降低读操作的等待时间,但由于降低了写操作的优先级,写操作需等待读锁都释放后才可执行,使MySQL队列中有可能堆积写操作。