摘要: 对于如何选择存储引擎,可以简答的归纳为一句话:“除非需要用到某些INNODB 不具备的特性,并且没有其他办法可以替代,否则都应该选择INNODB 引擎”。例如:如果要用到全文索引,建议优先考虑INNODB加上Sphinx的组合,而不是使用支持全文索引的myisam。当然,如果不需要用到InnoD... 阅读全文
posted @ 2015-11-16 23:42 郑彦秋 阅读(2345) 评论(0) 推荐(0) 编辑
摘要: 在MYSQL 5.1 以及之前的版本,MyISAM 是默认的存储引擎。MyISAM 提供了大量的特性,包括全文索引,压缩,空间函数(gis)等,但是MyISAM不支持事务和行级锁,而且有一个毫无疑问的缺陷就是崩溃后无法完全恢复。正是由于MYISAM引擎的缘故,即使Mysql支持事务已经很长时间了... 阅读全文
posted @ 2015-11-16 23:20 郑彦秋 阅读(202) 评论(0) 推荐(0) 编辑
摘要: InnoDB 采用了MVCC来支持高并发,并且实现了四个标准的隔离级别。其默认级别是REPEATABLE READ(可重复读) ,并且,通过间隙锁(next-key locking)策略防止幻读的出现。间隙锁使得InnoDB 不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定,防止幻影行的插入。... 阅读全文
posted @ 2015-11-16 22:55 郑彦秋 阅读(261) 评论(1) 推荐(0) 编辑
摘要: 表锁: 表锁是mysql 中最几本的锁策略,并且是开销最小的策略:它会锁定整张表。 一个用户在对表进行锁操作(增,删,改)前,首先要获得写锁,这会阻塞其他用户对该表的所有读写操作。只有没有写锁时,其他用户才能获得读锁,读锁之间是不相互阻塞的。 在特定的场景中,表锁也可能有良好的性能。例如:RE... 阅读全文
posted @ 2015-11-16 22:05 郑彦秋 阅读(1259) 评论(0) 推荐(0) 编辑
摘要: READ UNCOMMITED(未提交读) 在RERAD UNCOMMITED级别,事务中的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,这也成为脏读(Dirty Read)。这个级别会导致很多问题,从性能上说READ UNCOMMITED 不会比其他的级别好太多,但缺乏其... 阅读全文
posted @ 2015-11-16 22:02 郑彦秋 阅读(2120) 评论(0) 推荐(0) 编辑