《深入浅出Mysql》阅读梳理 四

本文详细介绍了MySQL的事务控制,包括如何开启、回滚、提交事务及使用保存点。接着,文章深入探讨了MySQL的分区特性,如分区的优点、不同类型的分区(Range、List、Columns、Hash、Key及子分区)及其应用场景。还讨论了如何管理分区,如添加、删除、重定义和交换分区,以及处理NULL值的方法。
摘要由CSDN通过智能技术生成

点击查看合集

事务控制

开启事务:start transaction
回滚到事务开始的地方:RollBack
添加保存点:SavePoint point1 (同名保存点,后创建的会覆盖先创建的。删除保存点: release SavePoint point1 )
回滚到保存点:RollBack To point1
提交事务:Commit
commit and chain:提交事务后,马上开启一个新事务
commit release 或者commit work :提交事务后断开与客户端的连接。

MySQL分区

分区有利于管理非常大的表,他采用了分而治之的逻辑。分区引入了分区键的概念,分区键用于根据某个区间值(或者范围)、特定值列表或者Hash函数值执行数据的聚集。让数据根据规则分布在不同的分区中。让一个大对象变成许多小对象。

MySQL分区的优点

1.和单个磁盘或者文件系统分区相比,可以存储更多的数据
2.优化查询。在where字句中包含分区条件时,可以只扫描必要的1个或几个分区。count(*)函数可以并发执行再汇总结果
3.对于已经过期或者不需要保存的数据,可以通过删除与这些数据相关的分区来删除这些数据
4.跨多个磁盘来分散数据查询,以获得更大的查询吞吐量。

分区类型

1.Range分区:基于一个给定连续区间范围,把数据分配到不同的分区。
2.List分区:类似Range分区,区别在于List分区是基于枚举出的值列表分区,Range是基于给定的连续区间范围分区
3.Columns分区:类似于Range和List,区别在于分区键既可以是多列又可以是非整数
4.Hash分区:基于给定的分区个数,把数据取模分配到不同的分区
5.Key分区:类似于Hash分区,但使用MySQL提供的哈希函数
6.子分区:也叫做复合分区或者组合分区,即再主分区下再做一层分区,将数据再次分割。
在Mysql 5.7中除了Key分区和Columns分区其他的分区都必须是int类型。
不能使用主键或者唯一键之外的键作为分区键,除非没有主键或者唯一列。

Range分区

例子

create table test7(
	id int
)
Partition BY Range(id) (
	Partition p0 Values Less Than (10),
	Partition p1 Values Less Than (20),
	Partition p2 Values Less Than (30)
)

用id作为分区键分了三个区。分别是小于10、[10,20) [20,30)。如果插入30的话将会报错。
而且就像switch case 语句一样这三个不能调换顺序

Insert into test7 VALUES(30)
> 1526 - Table has no partition for value 30
> 时间: 0s

因为没有规定大于等于30的数据存在哪里。因此只需要加上即可。可以通过下列语句添加大于等于30的数据为一个分区

Alter Table test7 add Partition(Partition p3 Values Less Than(MAXVALUE))
> OK
> 时间: 0.037s

在执行插入语句

Insert into test7 VALUES(30)
> Affected rows: 1
> 时间: 0.003s

如果使用了Values Less Than (MAXVALUE)后又想要添加分区的话。只能重新建

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值