摘要: 因为Memory引擎不支持BOLB和TEXT类型,所以,如果查询使用了BLOB或TEXT列并且需要使用隐式临时表,将不得不使用MyISAM磁盘临时表,即使只有几行数据也是如此。 这会导致严重的性能开销。。即使配置Mysql将临时表存储在内存块设备上(ram-disk),依然需要很多昂贵的系统调... 阅读全文
posted @ 2015-11-17 22:43 郑彦秋 阅读(1135) 评论(1) 推荐(0) 编辑
摘要: Mysql 可以为整数类型制定宽度,例如:int(11) ,对大多数应用这是没有意义的:它不会限制值的合法范围,它只是规定了Mysql的一些交互工具(例如mysql命令行客户端)用来显示字符个数。对于存储和计算来说:int(11)和int(1)是相同的。 阅读全文
posted @ 2015-11-17 20:56 郑彦秋 阅读(532) 评论(0) 推荐(0) 编辑
摘要: 对于如何选择存储引擎,可以简答的归纳为一句话:“除非需要用到某些INNODB 不具备的特性,并且没有其他办法可以替代,否则都应该选择INNODB 引擎”。例如:如果要用到全文索引,建议优先考虑INNODB加上Sphinx的组合,而不是使用支持全文索引的myisam。当然,如果不需要用到InnoD... 阅读全文
posted @ 2015-11-16 23:42 郑彦秋 阅读(2350) 评论(0) 推荐(0) 编辑
摘要: 在MYSQL 5.1 以及之前的版本,MyISAM 是默认的存储引擎。MyISAM 提供了大量的特性,包括全文索引,压缩,空间函数(gis)等,但是MyISAM不支持事务和行级锁,而且有一个毫无疑问的缺陷就是崩溃后无法完全恢复。正是由于MYISAM引擎的缘故,即使Mysql支持事务已经很长时间了... 阅读全文
posted @ 2015-11-16 23:20 郑彦秋 阅读(203) 评论(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 郑彦秋 阅读(2124) 评论(0) 推荐(0) 编辑