row-level locking 的overhead 比table-level locking的overhead更大: 更慢,需要消耗更多内存。
至于为什么?我没读过源码,在网上也没搜到具体的原因。只看到一句勉强可以接受的解释:Row locking is more complex than table locking, and so it’s slower and takes more memory.
不管为什么,这个结论让人有点吃惊,对不对?
另外要注意的是,myisam中shared table lock并不会阻止对表的插入操作,一边读一边插入,MyISAM还是挺快的。
结合以上两点:1.table lock更轻; 2. table lock不阻止插入,如果你的业务不需要事务,又以insert和select为主的话,那么MyISAM是比InnoDB更好的选择。