您的位置:首页 > 数据库 > MySQL

[MySQL优化案例]系列 -- 在5.1的分区功能中混用InnoDB和MyISAM

2017-04-13 00:00 633 查看
MySQL 5.1中增加了分区(partition)功能,有了这个功能,以前很头疼的分表方案,现在就变得不再那么麻烦了。不过,如果采用了MyISAM引擎,而且在数据量较大的情境下,并发读写仍然是个问题,尤其是对索引的更新。为此,可以在分区表中采用MyISAM和InnoDB引擎混用的方法,大致如下:

mysql>
mysql> CREATE TABLE test_part(
-> date DATE NOT NULL DEFAULT '0000-00-00',
-> comment VARCHAR(20) DEFAULT NULL
-> )ENGINE=MyISAM
-> PARTITION BY RANGE (to_days(date))
-> (
-> PARTITION nov08 VALUES LESS THAN(TO_DAYS('2008-12-01')),
-> PARTITION dec08 VALUES LESS THAN(TO_DAYS('2009-01-01')),
-> PARTITION jan09 VALUES LESS THAN(TO_DAYS('2009-02-01')),
-> PARTITION feb09 VALUES LESS THAN(TO_DAYS('2009-03-01')),
-> PARTITION mar09 VALUES LESS THAN(TO_DAYS('2009-04-01')) ENGINE=InnoDB,
-> PARTITION unpart VALUES LESS THAN MAXVALUE
-> );


这样的话,就可以利用InnoDB的行锁以及buffer pool实现了对索引以及行记录的并发读写,大大提高效率。不幸的是,目前5.1还不支持这样的混合引擎特性,所以,上面的想法暂时只是美好的愿望了,哈哈。

上面的创意来自:
Venu Anuganti,原文出自:
http://venublog.com/2009/03/16/mysql-51-mix-of-handlers-in-partitions/

本文出自 “MySQL中文网”博客
http://www.imysql.cn/

本文出自 “老叶茶馆” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息