当前位置: 首页 > news >正文

移动端网站怎么做外链荆州学校网站建设

移动端网站怎么做外链,荆州学校网站建设,小程序开发平台好牌子推荐,饿了么如何做网站推广标题索引事务作用事务流程隔离级别实例验证事务作用事务是确保数据库系统数据的完整性的功能#xff0c;如现在互联网行业支付业务#xff0c;不管服务器出于什么原因异常中断#xff0c;客户要么支付成功要么支付不成功#xff0c;支付成功数据库金额即会发生变化#xf… 标题索引事务作用事务流程隔离级别实例验证事务作用    事务是确保数据库系统数据的完整性的功能如现在互联网行业支付业务不管服务器出于什么原因异常中断客户要么支付成功要么支付不成功支付成功数据库金额即会发生变化支付不成功客户的金额就不发生变化确保了交易业务的稳定性。支持事物的引擎必须满足ACID满足ACID后才能满足事物另外事物的回滚或恢复主要靠事物日志来完成ACID含义分别如下    A:atomicity(原子性)整个事物中所有的操作为命令执行最小单元全部执行、执行一半失败回滚或失败回滚    C:consistency(一致性)数据库从一个状态转化为另外一个状态状态在转化前和转换后一致    I:isolation(隔离性)一个事物所做出的操作在提交之前是不能被其他所见因此隔离就出现多种隔离级别具体包括read-uncommitted读为提交、read-committed读提交、repeatable-read可重复读和serializable串行化    D:durability(持久性)一旦事物提交所做的会永久性保存数据库中。事务流程    事务的工作流程具体可见下图    图1-1 事物工作流程    由上图可知当数据库通过start transaction启动一个事物启动事物后对数据库进行一系列的操作最后提交事物提交事物又有两种第一种为commit提交第二种rollback回滚一旦提交事物数据库即处于新的状态保持持久性。另外在防止数据库在事物提交后数据从内存写入磁盘时操作系统异常掉电导致无法保存而启用日志功能只要启用事物日志功能事物先在磁盘连续空间写写日志然后通过内存同步到磁盘确保万一内存同步磁盘时机器异常掉电通过事物日志进行恢复数据库数据。隔离级别    隔离级别(INNODB默认隔离级别为repeatable read)    READ UNCOMMITTED(读未提交)此种隔离级别带来问题有脏读和不可重复读。    READ COMMITTED(读提交)此种隔离级别解决了脏读但仍然有不可重复度。    REPEATABLE READ(可重读)此种隔离级别解决了脏读和不可重复读带来问题幻读。    SERIALIZABLE(可串行化)此种隔离级别解决了脏读、不可重复度和幻读但带来的问题是加锁读。    问题解释    脏读当用户A修改数据但未提交此时B用户读A修改后的数据但是A用户将数据进行rollback回滚因此B用户看到的是错误的数据    不可重复读如用户A启动一个事务设置某一值设为ON经查询已经为ON状态但B用户修改数值为OFF并提交此时用户A再次查询时发现值又为OFF或者数据库中又多了一条语句表现为在同一事务中每次查询数据库总是不一致    幻读当用户A用户在同一事务中看到某一值为ON用户B已经将值修改为OFF并且已经提交用户B看到的值为OFF但用户A在此事务中一直看到的为ON底层数据确实被修改为OFF因此就体现了幻读除非提交后再次生成一个事务查看值才为OFF    加锁读读数据时加锁此时别人无法再读。实例验证    根据理论概述进行验证事物的工作流程和隔离级别确保透彻了解事物的原理具体操作如下MariaDB [(none)] show processlist;                                      #查看数据库的进程列表显示有两终端连接 ----------------------------------------------------------------------------- | Id | User | Host      | db   | Command | Time | State | Info             | Progress | ----------------------------------------------------------------------------- |  2 | root | localhost | NULL | Sleep   |   23 |       | NULL             |    0.000 | | 10 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |    0.000 | ----------------------------------------------------------------------------- 2 rows in set (0.00 sec) MariaDB [(none)] show global variables like tx_isolation;           #验证事物的隔离级别 -------------------------------- | Variable_name | Value           | -------------------------------- | tx_isolation  | REPEATABLE-READ | -------------------------------- 1 row in set (0.00 sec)    验证隔离级别 READ UNCOMMITTED存在脏读、不可重复读    第一步创建表并插入数据MariaDB [test] create table employee(id int,name varchar(20),age char(3));                             #创建表 Query OK, 0 rows affected (0.00 sec) MariaDB [test] insert into employee  values(1,tangseng,38),(2,sunwukong,505),(3,zhubajie,485),(4,shaheshang,408);      #给表中添加用户 Query OK, 4 rows affected (0.01 sec) Records: 4  Duplicates: 0  Warnings: 0     第二步在两个数据库连接线程的会话变量中设置隔离级别为READ-UNCOMMITTED会话1 MariaDB [(none)] set tx_isolationREAD-UNCOMMITTED; Query OK, 0 rows affected (0.00 sec) MariaDB [test] start transaction;                 #开启事物 Query OK, 0 rows affected (0.00 sec)会话2 MariaDB [(none)] set tx_isolationREAD-UNCOMMITTED; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)] MariaDB [test] start transaction;                 #开启事物 Query OK, 0 rows affected (0.00 sec)    第三步两边同时启用事物,其中会话1添加bailongma但不提交在会话2上查看验证会话1                     #插入数据但未提交会话2上查询后验证 MariaDB [test] insert into employee values(5,bailongma,300); Query OK, 1 row affected (0.00 sec) 会话2                     #经查询验证会话1尚未提交已经可以读取若会话1回滚会话2读取数据为脏数据 MariaDB [test] select * from employee; ------------------------ | id   | name       | age  | ------------------------ |    1 | tangseng   | 38   | |    2 | sunwukong  | 505  | |    3 | zhubajie   | 485  | |    4 | shaheshang | 408  | |    5 | bailongma  | 300  | ------------------------ 5 rows in set (0.00 sec)    验证隔离级别READ-COMMITTED解决脏读问题存在不可重复读    第一步创建表并插入数据MariaDB [test] create table employee(id int,name varchar(20),age char(3));                             #创建表 Query OK, 0 rows affected (0.00 sec) MariaDB [test] insert into employee  values(1,tangseng,38),(2,sunwukong,505),(3,zhubajie,485),(4,shaheshang,408);      #给表中添加用户 Query OK, 4 rows affected (0.01 sec) Records: 4  Duplicates: 0  Warnings: 0     第二步在两个数据库连接线程的会话变量中设置隔离级别为READ-COMMITTED会话1 MariaDB [(none)] set tx_isolationREAD-COMMITTED; Query OK, 0 rows affected (0.00 sec) MariaDB [test] start transaction;              #开启事务 Query OK, 0 rows affected (0.00 sec)会话2 MariaDB [(none)] set tx_isolationREAD-COMMITTED; Query OK, 0 rows affected (0.00 sec) MariaDB [test] start transaction;              #开启事务 Query OK, 0 rows affected (0.00 sec)    第三步在两个连接数据库的线程进程添加bailongma但不提交进行验证会话1 MariaDB [test] insert into employee values(5,bailongma,305); Query OK, 1 row affected (0.00 sec) 会话2              #在会话1未提交时会话2是无法读取数据 MariaDB [test] select * from employee; ------------------------ | id   | name       | age  | ------------------------ |    1 | tangseng   | 38   | |    2 | sunwukong  | 505  | |    3 | zhubajie   | 485  | |    4 | shaheshang | 408  | ------------------------ 4 rows in set (0.00 sec)    第四步在连会话1上进行提交然后在会话2上进行验证会话1 MariaDB [test] commit; Query OK, 0 rows affected (0.00 sec) 会话2                  MariaDB [test] select * from employee; ------------------------ | id   | name       | age  | ------------------------ |    1 | tangseng   | 38   | |    2 | sunwukong  | 505  | |    3 | zhubajie   | 485  | |    4 | shaheshang | 408  | |    5 | bailongma  | 305  | ------------------------ 5 rows in set (0.00 sec)    #说明读提交可以解决脏读的问题    验隔离级别REPEATABLE READ(解决脏读和重复读的问题带来新的问题幻读)    第一步创建表并插入数据MariaDB [test] create table employee(id int,name varchar(20),age char(3));                             #创建表 Query OK, 0 rows affected (0.00 sec) MariaDB [test] insert into employee  values(1,tangseng,38),(2,sunwukong,505),(3,zhubajie,485),(4,shaheshang,408);      #给表中添加用户 Query OK, 4 rows affected (0.01 sec) Records: 4  Duplicates: 0  Warnings: 0    第二步在两个数据库连接线程的会话变量中设置隔离级别为REPEATABLE-READ会话1 MariaDB [(none)] set tx_isolationREPEATABLE-READ; Query OK, 0 rows affected (0.00 sec) MariaDB [test] start transaction;              #开启事务 Query OK, 0 rows affected (0.00 sec)会话2 MariaDB [(none)] set tx_isolationREPEATABLE-READ; Query OK, 0 rows affected (0.00 sec) MariaDB [test] start transaction;              #开启事务 Query OK, 0 rows affected (0.00 sec)    第三步先会话2中开启一个事物查询表中数据然后在会话1中添加bailongma用户再次在会话2中的同一事务中查看表中数据发现会话1中数据已经发生变化会话2的同一事物中任然是之前的数据因此解决了事物的可重复读会话2           #开启一个事物并查询表中数据 MariaDB [test] select * from employee; ------------------------ | id   | name       | age  | ------------------------ |    1 | tangseng   | 38   | |    2 | sunwukong  | 505  | |    3 | zhubajie   | 485  | |    4 | shaheshang | 408  | ------------------------ 4 rows in set (0.00 sec) 会话1        #添加bailongma数据后提交并查询 MariaDB [test] insert into employee values(5,bailongma,305); Query OK, 1 row affected (0.00 sec)MariaDB [test] commit; Query OK, 0 rows affected (0.00 sec) MariaDB [test] select * from employee; ------------------------ | id   | name       | age  | ------------------------ |    1 | tangseng   | 38   | |    2 | sunwukong  | 505  | |    3 | zhubajie   | 485  | |    4 | shaheshang | 408  | |    5 | bailongma  | 305  | ------------------------ 5 rows in set (0.00 sec) 会话2      #在会话2上再次查询结果任然是4条数据原因是会话2上的事物并未提交并且解决了可重复读因此只能看到4条除非提交事物后再次查询 MariaDB [test] select * from employee; ------------------------ | id   | name       | age  | ------------------------ |    1 | tangseng   | 38   | |    2 | sunwukong  | 505  | |    3 | zhubajie   | 485  | |    4 | shaheshang | 408  | ------------------------ 4 rows in set (0.00 sec) MariaDB [test] select * from employee; ------------------------ | id   | name       | age  | ------------------------ |    1 | tangseng   | 38   | |    2 | sunwukong  | 505  | |    3 | zhubajie   | 485  | |    4 | shaheshang | 408  | |    5 | bailongma  | 305  | ------------------------ 5 rows in set (0.00 sec)    验隔离级别SERIALIZABLE(解决重复读的问题需注意每次操作都需要重启新的事物和提交因为有加锁一个事物只能是一组语句)     第一步创建表并插入数据MariaDB [test] create table employee(id int,name varchar(20),age char(3));                             #创建表 Query OK, 0 rows affected (0.00 sec) MariaDB [test] insert into employee  values(1,tangseng,38),(2,sunwukong,505),(3,zhubajie,485),(4,shaheshang,408);      #给表中添加用户 Query OK, 4 rows affected (0.01 sec) Records: 4  Duplicates: 0  Warnings: 0    第二步在两个数据库连接线程的会话变量中设置隔离级别为SERIALIZABLE会话1 MariaDB [(none)] set tx_isolationSERIALIZABLE; Query OK, 0 rows affected (0.00 sec) MariaDB [test] start transaction;              #开启事物 Query OK, 0 rows affected (0.00 sec)会话2 MariaDB [(none)] set tx_isolationSERIALIZABLE; Query OK, 0 rows affected (0.00 sec) MariaDB [test] start transaction;              #开启事物 Query OK, 0 rows affected (0.00 sec)    第三步当会话1上进行插入bailongma用户前在会话2上进查询并提交会话1添加bailongma并提交然后再次在会话2上进行查询会话1       #添加用户后并未提交 MariaDB [test] insert into employee values(5,bailongma,305); Query OK, 1 row affected (0.00 sec) 会话2       #在会话1上未提交时会话1对表进行加锁因此会话2上时无法查询因此解决幻读 MariaDB [test] select * from employee; ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 转载于:https://blog.51cto.com/weiboxue/2045010
http://www.pierceye.com/news/310148/

相关文章:

  • 网站百度一直没有收录热狗网站关键词优化
  • 视频网站开发价格本地app开发公司电话
  • 网站设计风格介绍北京市建设工程信息网如何登录
  • 怎么创建一个属于自己的网站怎么制作做网站
  • 大学加强网站建设与管理的通知莱芜金点子租房信息港
  • 网站的营销与推广杭州五旋科技网站建设怎么样
  • 莱芜四中网站如何优化网站目录结构
  • 深圳公司网站设计哪家好北京装修公司十大排名
  • 如何制作一个好网站做国际网站找阿里
  • 南京制作网站wordpress网站源码上传
  • 做装修效果图的网站有哪些软件泉州营销型网站设计
  • 让路由器做网站服务器一级建造师价格最新行情
  • 白沟做网站wordpress批量编辑
  • 网站充值支付宝收款怎么做天元建设集团有限公司第七建筑工程公司
  • 定制家具网站源代码海口本地网站
  • 公司网站建设平台公司做网站开发流程
  • wordpress网站怎么打开很慢劳务派遣和外包一样吗
  • cms怎么搭建网站做装修的网站怎么做好
  • 个人网站建站的流程做网站一定要会ps么
  • 网站的数据运营怎么做国外做贸易网站
  • 网站全站开发需要学什么怎么样免费给网站做优化
  • 做的好的学校网站简单公司网页设计
  • 宿迁网站建设公司排名电子政务门户网站建设项目招标采购
  • 建立校园网站广告设计与制作需要学什么专业
  • 汽车案例网站百度云网站备案流程
  • 生产建设兵团第三师政务网站搜索引擎有哪些种类
  • 制作网站公司图片山东省建设工程质量监督总站网站
  • 物流网站模板免费长沙推广型网站建设
  • 电商网站策划做网站知乎
  • 彩票网站开发是否合法网站开发中遇到的主要问题