作者回复: 这是因为MySQL的锁机制是在引擎层实现,而不是是数据层实现。因此,行锁是加在索引上。oracle倒是把行锁加在了数据行上。
作者回复: 总结得挺好的~
对于你提到的例子,在数据库和服务器间加入一个缓存层的设计,其实也是非常常见的例子,无论是使用memcached,还是Redis的案例都有。
不过,分层处理和减少磁盘IO在某些场景下会有重叠。在我看来,单纯使用一个缓存层加载全部数据的话,我会将它归在“减少磁盘IO”中。但是如果是“将部分最热的数据装载到缓存中”,那么就是应用了二八原则的分层处理思想。
作者回复: 1.的确,一般来说,我们是对数据进行加锁,但innodb是对索引加锁,而不是对记录加锁。这也是理解innosb特点的关键。有兴趣可以深入研究一下。
4.你说到了很好的一个点:数据在不同层之间是怎么移动的?这个的确也很重要。我下一篇正好就会讲到一个内存数据往磁盘写的例子,敬请期待。