触发器 事务控制 sql MODE mysql分区

                                触发器  事务控制   sql mode  mysql分区

1.触发器:

   创建:   create trigger _[befor/after]_  _ [insert/update/delete]_ on _名字_ for each row _语句_ ;

   删除:  drop trigger  [数据库名字 . ] _触发器名字_  ; 

   查看触发器: show  triggers \G ;    或者是查看information_schema.triggers 表[decs triggers ;]


2.事务控制和锁定语句:

  锁定语句:lock table  和 unlock table  :

                     lock tables _名字_ [read / write],名字......;

                     unlock  tables ;

   事务控制:mysql 通过 set autocommit , start transaction , commit ,rollback  ;

             具体语法:start transaction \  begin  _语句_ ;

                               commit  [and chain  release] 

                               rollback [and chain release]

                               set autocommit = [0/1]  ;                    

                      注:chain和release子句分别用来定义在提交或者回滚后的动作,chain会立即启动一个新事物,                                                                                                                                     release会断开和客户端的连接。

                             savepoint和rollback to savepoint ;这就是可以利用部分点来存储位置。回滚的时候可以回滚到指                                                                                        定位置,release savepoint用来释放保存点。

             分布式事务:阶段一:开始:                 xa start\begin __ __ ;  {标识符,和分支标识符} 。

                                   阶段二: 使处于准备状态:xa end __ __ ;

                                                                             xa prepare __ __ ;

                                   阶段三:提交或者回滚:  xa commit __ __ ;

                                                                             xa rollback __ __ ;

                                   注:查看分支事务详细信息: xa recover ;

3.sql  Mode :

            作用:sql mode负责 设置模型类型,完成不同严格程度的数据校验。

            语法:查看:select @@sql_mode;

                       设置:set session/global sql_mode=' strict_trans_tables ' ;

                                注:session 和 global 区别:session代表只在本次连接中生效,global代表本次连接不生效,对                                         于新的连接则生效。

                               参数:不严格:sql_mode=' ansi '  ;代表可以插入非法日期参数,值被设置成零。

                                             严格:sql_mode=' traditional ' ;代表非法日期参数不能插入进表格。

                                  失效反斜线[/]:sql_mode=' no_backslash_escapes ' ;代表直接输出反斜线,忽略转义符。

                                  将[||]当作连接符号:sql_mode=' pipes_as_concat ' ;与oracle相匹配。将||当作连接符号。

                                  去掉engin关键字:sql_mode=' no_table_options ' ;查看建表语句时候去掉engin语句。

4.Mysql 分区: 

                  查看是否支持分区:show variables ;来产看当前mysql是否支持分区 。

                  分区类型:range分区  类似  list分区  |   hash分区 类似  key分区 。columns 分区。

                  range分区:partition by range(__)( partition _ values less than __,partition _ values less than __) ;

                                      注:values less than maxvalue ;代表可以插入最大的整数值。

                             删除分区:alter table __ drop partition __ ;就可以删除对应表的对应分区。

                  list分区: partition by list(__)(partition __ valuse in (_,_),patition values in (_,_) ) ;

                  columns分区:不仅仅支持了整数分区,还支持了其他类型的分区。就是整合了range和list。

                                          所以分为range columns和list columns 。

                                   partition by list columns(_)( pritition __ values in (_,_) ) ;

                  Hash分区:种类:常规hash分区[取模]和线性hash分区[线性2的幂的运算]:

                                              常规hash分区:partition by hash (__) partitions __ ;   数据分布较均匀,不适合增删改。

                                              线性hash分区:partition by linear hash(_) partitions __ ; 不均匀,适合增删改。

                  Key分区:类似于hash分区,只是key分区不允许使用自定义表达式,而hash可以。

                                   partition by key (__) partitions __ ;

                 符合分区:适合于保存非常大的数据记录。

                                  partition by range (_) subpartition by hash(_) subpartitions _ (patititon _ values less than _,...) ; 

                 注:几个分区方法处理null值时候的处理方式不同,range中null当作最小值处理,list中null必须出现在枚举                                                                                                   列表中,hash中null被当作零来处理。

                 注:通过alter table 命令可实现添加,删除,重定义,合并,拆分  分区的命令。

                 删除:alter table __ drop partition __ ;

                 增加:alter table __ add partition __ ;

                 重定义:拆分alter table __ reorganize partition __ into (partititon _ values less than (),... ) ;拆分。

                               合并alter table __ reorganize partition __ __ __into(partition _ values less than ()) ;合并。

               hash和key的增加和删除跟range和list不一样:减少分区用alter table coalesce partition _ ;来进行减少。

                                                                                         增加分区alter table add partition _ ;来进行增加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值