谈点我的看法
分区表:可以想象为磁盘的多个分区一样,可以减少全盘扫描的可能。直接定位到某个分区表上
类似要在电脑上找文件,直接到c盘,防止在D E F盘扫描一样,从而减少io压力,提升性能。在查询上分区表表现还不是十分突出,但是删除,作数据迁移的时候就很明显了。
索引:索引在查询上可以快速定位符合要求的纪录,查询通过索引,也可以防止全表扫描,类似直接定位excel里面的行号一样。但是索引维护对insert update影响必须要考虑到
简单点理解2者区别,从数据库角度来看,分区表更侧向于片状范围划定,索引更趋向于线性定位
判断MySQL是不是支持分区
怎样通过show命令来判断你当前的MySQL数据库是否支持数据库分区功能。在显示任何有关分区支持信息的命令show engines的输出中,不会给出任何信息;必须使用show variables命令来做出这个判断。如下:
1
2
3
4
5
6
7
mysql> show variables like '%partition%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| have_partition_engine | YES |
+-----------------------+-------+
1 row in set (000 sec)
如果没有看到变量have_partition_engine的值为YES,那么MySQL的版本就不支持分区。
(注意:在显示任何有关分区支持信息的命令show engines的输出中,不会给出任何信息;必须使用show variables命令来做出这个判断)
我的MySQL:
版本:Server version 5151
mysql> show variables like '%partition%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| have_partitioning | YES |
+-------------------+-------+
1 row in set (000 sec)
create table sale(
sale_id int not null,
sale_date datetime,
money int
)engine=myisam;
alter table sale partition by range columns (sale_date) (
partition p01 values less than ('2011-1-1'),
partition p02 values less than ('2012-1-1')
);
mysql数据库KEY分区用法
按照KEY进行分区类似于按照HASH分区,除了HASH分区使用的用户定义的表达式,而KEY分区的
哈希函数是由MySQL
服务器提供。MySQL
簇(Cluster)使用函数MD5()来实现KEY分区;对于使用其他存储引擎的表,服务器使用其自己内部的
哈希函数,这些函数是基于与PASSWORD()一样的运算法则。
“CREATE
TABLE
PARTITION
BY
KEY”的语法规则类似于创建一个通过HASH分区的表的规则。它们唯一的区别在于使用的关键字是KEY而不是HASH,并且KEY分区只采用一个或多个列名的一个列表。
通过线性KEY分割一个表也是可能的。下面是一个简单的例子:
CREATE
TABLE
tk
(
col1
INT
NOT
NULL,
col2
CHAR(5),
col3
DATE
)
PARTITION
BY
LINEAR
KEY
(col1)
PARTITIONS
3;
在KEY分区中使用关键字LINEAR和在HASH分区中使用具有同样的作用,分区的编号是通过2的幂(powers-of-two)算法得到,而不是通过模数算法。
如果一张表的数据量太大的话,那么myd,myi就会变的很大,查找数据就会变的很慢,这个时候我们可以利用mysql的分区功能,在物理上将这一张表对应的三个文件,分割成许多个小块,这样呢,我们查找一条数据时,就不用全部查找了,只要知道这条数据在哪一块,然后在那一块找就行了。如果表的数据太大,可能一个磁盘放不下,这个时候,我们可以把数据分配到不同的磁盘里面去。
以上就是关于mysql的分区表和索引对查询性能优化有何区别全部的内容,包括:mysql的分区表和索引对查询性能优化有何区别、判断MySQL是不是支持分区、为什么mysql5.5查看表分区的某个区块上的数据时,语法报错等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)