MySQL
常用语句
用户相关\管理相关\数据相关
视图\事件\存储过程\函数\游标\触发器
事务\分区
常用工具
管理优化
锁问题
MySQL日志
异步复制
半同步复制
复制管理
5.7开启并行复制
双主备份
故障问题
索引
时区
mysql_random_data_load 数据生成
表的导出导入
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 把事务回滚到标记点; > > >--- 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) );
分享到: