MySQL
常用语句
用户相关\管理相关\数据相关
视图\事件\存储过程\函数\游标\触发器
事务\分区
常用工具
管理优化
锁问题
MySQL日志
异步复制
半同步复制
复制管理
5.7开启并行复制
双主备份
故障问题
索引
时区
表的导出导入
MySQLdump逻辑备份
XtraBackup全备
XtraBackup增备
XtraBackup原表数据恢复
安装MySQL
ProxySQL中间件
Atlas中间件
keepalived安装
MHA安装
MHA恢复
mha复制检查报错及解决过程
集群Cluster安装
维护Cluster
开启审计功能
本文档使用MrDoc发布
返回首页
-
+
事务\分区
2020年4月22日 18:54
admin
#事务 >###控制语句 BEGIN 或 START TRANSACTION 显式地开启一个事务; -------------------------------------------------------- COMMIT 也可以使用 COMMIT WORK,不过二者是等价的。COMMIT 会提交事务,并使已对数据库进行的所有修改成为永久性的; -------------------------------------------------------- ROLLBACK 也可以使用 ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改; -------------------------------------------------------- SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个保存点,一个事务中可以有多个 SAVEPOINT; -------------------------------------------------------- RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常; -------------------------------------------------------- ROLLBACK TO identifier 把事务回滚到标记点; >![](/media//202004/2020-04-22204909424593.png) >![](/media//202004/2020-04-22204933182729.png) >--- SET TRANSACTION 用来设置事务的隔离级别。InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。 -------------------------------------------------------- #未提交读 SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITIED; 脏读:所有事务都可以看到其它未提交事务的执行结果。 -------------------------------------------------------- #提交读 SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED; 不可重复读:A、B事务,A查询了一次结果,B事务更新并提交后,A查询了更新后的结果,同一A事务中的查询出现了不同的查询结果。 -------------------------------------------------------- #可重复读(默认) SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ; 幻读:幻读侧重的方面是某一次的 select 操作得到的结果所表征的数据状态无法支撑后续的业务操作。更为具体一些:select 某记录是否存在,不存在,准备插入此记录,但执行 insert 时发现此记录已存在,无法插入,此时就发生了幻读。 -------------------------------------------------------- #可串行化 SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE; --- #分区 >##分区类型: RANGE分区 #基于一个给定连续区间范围,把数据分配到不同的分区。 -------------------------------------------------------- LIST分区 #类似RANGE分区,区别在LIST分区是基于枚举出的值列表分区,RANGE是基于给定的连续区间范围分区。 -------------------------------------------------------- HASH分区 #基于给定的分区个数,把数据分配到不同的分区。 -------------------------------------------------------- KEY分区 #类似于HASH分区。 >##创建分区 >>####创建RANGE分区 create table emp ( id INT NOT NULL, ename varchar(30) ) PARTITION BY RANGE (id) ( PARTITION p0 VALUES LESS THAN (10), PARTITION p1 VALUES LESS THAN (20), PARTITION p2 VALUES LESS THAN (30) ); >>####创建LIST分区 create table emp ( id INT NOT NULL, ename varchar(30) ) PARTITION BY LIST (id) ( PARTITION p0 VALUES IN (1,3), PARTITION p1 VALUES IN (2,4), PARTITION p2 VALUES IN (5), PARTITION p3 VALUES IN (6) ); >>####创建HASH分区 create table emp ( id INT NOT NULL, ename varchar(30) ) PARTITION BY HASH (id) PARTITIONS 4; >>####创建KEY分区 create table emp ( id INT NOT NULL, ename varchar(30) ) PARTITION BY KEY (id) PARTITIONS 4; --- >##添加分区 alter table emp add partition (PARTITION p3 VALUES LESS THAN (40)); --- >##删除分区 alter table emp drop partition p2; --- >##重定义分区(合并,拆分) #合并 alter table emp reorganize partition p2,p3 into ( PARTITION p2 VALUES LESS THAN (40) ); #拆分 alter table emp reorganize partition p3 into ( PARTITION p3 VALUES LESS THAN (35), PARTITION p4 VALUES LESS THAN (40) );
分享到: