Mysql Partition分区(理论)
2015-07-16 17:12
681 查看
Partition 分区
MySql 5.6 手册:http://dev.mysql.com/doc/refman/5.6/en/partitioning.html我理解的分区
举个例子,操作系统中的分区,是将硬盘根据大小进行逻辑分区,就是我们看到的C、D、E、F盘,逻辑分区还是在同一个操作系统中。数据库产品的Partition分区也是一样的道理,将数据进行逻辑分区,对数据划分界限。分区类型
MySql 支持Range,List,Hash,Key。最长用的是Range。注意不同的版本对分区类型的支持有些不同!Range:范围 CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30), hired DATE NOT NULL DEFAULT '1970-01-01', separated DATE NOT NULL DEFAULT '9999-12-31', job_code INT NOT NULL, store_id INT NOT NULL ) PARTITION BY RANGE (store_id) ( PARTITION p0 VALUES LESS THAN (6), PARTITION p1 VALUES LESS THAN (11), PARTITION p2 VALUES LESS THAN (16), PARTITION p3 VALUES LESS THAN (21) );
LIST:列表 CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30), hired DATE NOT NULL DEFAULT '1970-01-01', separated DATE NOT NULL DEFAULT '9999-12-31', job_code INT, store_id INT ) PARTITION BY LIST(store_id) ( PARTITION pNorth VALUES IN (3,5,6,9,17), PARTITION pEast VALUES IN (1,2,10,11,19,20), PARTITION pWest VALUES IN (4,12,13,14,18), PARTITION pCentral VALUES IN (7,8,15,16) );
Key:键 CREATE TABLE k1 ( id INT NOT NULL, name VARCHAR(20), UNIQUE KEY (id) ) PARTITION BY KEY() PARTITIONS 2;
HASH:哈希 CREATE TABLE employees ( id INT NOT NULL, fname VARCHAR(30), lname VARCHAR(30), hired DATE NOT NULL DEFAULT '1970-01-01', separated DATE NOT NULL DEFAULT '9999-12-31', job_code INT, store_id INT ) PARTITION BY HASH( YEAR(hired) ) PARTITIONS 4;
例子
数据:新闻表,2010开始记录,假设10年到15年每年的数据为200W,总数1000W;条件:查询15年7月所有的新闻数据;
未分区:需要把表遍历,1000W条数据,查询性能就不用说了;
分区:按照年份分区,当要查询15年数据,只会遍历15年的数据200W条;
参考
深入了解MySQL 5.5分区功能增强
相关文章推荐
- mysqldumpl备份
- MYSQL数据库中的现有表增加新字段(列)
- MySQL主从复制和读写分离
- Ubuntu 安装mysql
- MYSQL数据导入EXCEL
- mysql集群安装配置
- Mysql 性能优化(一 慢日志)
- mysql绿色版学习
- MySQL存储过程详解  mysql …
- mysql查看和修改字符集的命令
- mysql性能最大化
- Mysql使用命令修改密码
- mysql函数全
- MySQL 登录问题
- MySQL分区性能初探
- MySQL客户端服务器端命令总结
- MySQL无限重启原因分析
- navicat for mysql中SSH连接方式
- MySQL中优化sql语句查询常用的种方法
- MySQL忘记root密码如何解决?