mysql是否支持partition呢,在mysql下执行show plugins;(显示插件)
其中包含了partition字段就说明你的数据库支持分区技术
1,创建带有分区的表
表明创建了带有hash分区技术的表,t2表有5个分区
mysql支持的几种分区技术,最常用的是range和list二种,Hash主要用来测试
看到test中有12张t2表,每个分区表都有表索引,检索数据更快。
把t2表创建索引
create index in_id on t2(id);
2、现在我们插入一个一千万行的数据来测试
使用insert into t2 select * from t2;命令循环多次,即可得到一个千万条记录的数据
3、我们创建一个存储过程,来向一个表中插入8000000行数据
然后我们测试了分区表和未分区表在插入1000万行数据时,所用的时间
结果测试 分区表插入1000万行数据所用的时间如下:
未分区表插入1000万行数据所用的时间如下:
结果显示,未分区表插入数据要快很多
4、测试查询速度
分区表查询影响的行数如下:
未分区表查询影响的行数是全部800万行
可以看出分区表比不分区表查询速度要快很多
5、测试二者都加上索引后的查询速度
都创建索引后查询时间接近
6、分析一下mySQL二种常见的表存储引擎myisam和innodb
myisam表一般都有3个文件组成:表结构,表数据,表索引
innodb表一般有2个文件组成:表结构,表数据和索引
还有一点,就是innodb表有二种存储结构:共享表空间和独占表空间
所谓的共享表空间是指数据库的所有表数据,索引文件全部放在一个文件中(ibdata1),初始化为10M
独占表空间:每一个表都会将以独立的文件方式进行存储,每个表有2个文件:表结构和ibd文件(数据和索引),我们要实现表分区,必须设置成独立表空间
设置方法是:修改mysql配置文件vim /etc/my.cnf 添加 innodb_file_per_table=1
创建2个不同引擎的表
查看表的文件结构
innodb表结构(独占表空间)创建表分区