mysql分区表笔记
发布时间:2022-04-02 10:53:46 所属栏目:MySql教程 来源:互联网
导读:mysql分区表 mysql分区表是一个独立的逻辑表,但是底层由多个物理字表组成。 对分区的请求,都会通过句柄对象转化成对存储引擎接口的调用。所以分区对于 对于sql层来说是一个完全封装底层实现的黑盒子,对应用是透明的。 Mysql实现分区表的方式--对底层表
mysql分区表 mysql分区表是一个独立的逻辑表,但是底层由多个物理字表组成。 对分区的请求,都会通过句柄对象转化成对存储引擎接口的调用。所以分区对于 对于sql层来说是一个完全封装底层实现的黑盒子,对应用是透明的。 Mysql实现分区表的方式--对底层表的封装--意味着索引也是按照分区的字表定义的,而没有全局索引。 适合场景: 表中只有最后部分数据是热点数据,其他均为临时数据。 分区表中数据更容易维护,可以对独立的分区进行优化,检查、修复等操作 分区表数据可以分布在不同物理设备上,从而高效地利用多个硬件设备 可以备份和恢复独立的分区,这在非常大的数据集的场景下效果非常好。 分区限制: 一个分区表只能有1024个分区 如果分区字段中有主键或者唯一索引的列,那么所有主键列和唯一索引列都必须包含进来。 利用分区表来避免某些特殊的瓶颈,例如Innodb的单个索引的互斥访问ext3文件系统的inode锁竞争等。 分区表无法使用外键约束。 分区表的原理 从存储引擎的角度来看,底层表和一个普通的表没有任何不同,存储引擎也无需知道这是一个普通表还是一个分区表的一部分。 select查询 分区表的类型 mysql支持多种分区表。分区表达式可以是列,也可以是包含列的表达式。例如,下表就可以将每一年的销售额存放在不同的分区里。 create table sales( order_date datetime not null, --Other columns )engine=InnoDB partition by range(Year(order_date))( partition p_2010 values less then (2010), partition p_2011 values less then(2011), partition p_catchall values less then maxvalue); mysql还支持键值,哈希和列表分区。 系统通过子分区可降低索引的互斥访问的竞争。最近一年的分区的数据会被非常频繁地访问,这会导致大量的互斥锁的竞争。使用哈希子分区可以 将数据切成多个小片,大大降低互斥量的竞争问题。 (编辑:昌吉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐