MySQL 零碎笔记2

1.分区表

适用场景:
业务简单,单表查询,且都跟时间范围查询相关。
数据需要定期清理数据,无需保留全部数据。
数据更新频率较低,只有写入操作。

优点:
查询条件包含分区条件时,可以直接扫描必要的分区。也可以直接指定必要的分区来提高查询效率。
聚合查询时,可以很容易地在每个分区上并行处理,最终只需汇总得到结果。
对于已经过期或者不需要保存的数据,可以通过删除与这些数据有关的分区来快速删除数据。

缺点:
多表查询时,使用了分区表所有分区表都会参与关联查询,性能很差。
增加、删除分区,会获取表的MDL锁,这是一把全局锁,因此会影响业务查询。
分区的字段,必须是表上所有的唯一索引(或者主键索引)包含的字段的子集。
维护分区的成本可能很高。如果数据更新频率比较高,这个会导致行数据的重新分配分区。

注:
若数据清理直接使用 delete语句,当表数据量较大时,对数据库造成很大压力;即使我们删除了旧数据,已删除的数据仍占据存储空间,底层数据文件并没有立刻变小,以至于形成数据碎片,需要手动执行 OPTIMIZE TABLE命令来优化表(Innodb 引擎的可以利用操作系统来帮忙回收这些碎片),该命令会重新利用未使用的空间,并整理数据文件的碎片。

子分区

2. 数据库分片 ShardingSphere

2.1 简介

ShardingSphere 提供了三种模式:代理模式(Sharding-Proxy)、JDBC 模式(Sharding-JDBC)和侧端模式(Sharding-Sidecar)。其中,Sharding-JDBC 是以 JDBC 驱动的方式提供服务,Sharding-Proxy 则类似于 Mycat,采用代理模式。而且 ShardingSphere 除了支持数据分片,还支持读写分离、分布式事务、数据库治理等功能。

动态表

2333

posted on 2024-02-20 10:21  Lemo_wd  阅读(3)  评论(0编辑  收藏  举报

导航