MySQL ACID及四种隔离级别的解释】的更多相关文章

以下内容出自<高性能MySQL>第三版,了解事务的ACID及四种隔离级有助于我们更好的理解事务运作. 下面举一个银行应用是解释事务必要性的一个经典例子.假如一个银行的数据库有两张表:支票表(checking)和储蓄表(savings).现在要从用户Jane的支票账户转移200美元到她的储蓄账户,那么至少需要三个步骤: 1.检查支票账户的余额高于或者等于200美元. 2.从支票账户余额中减去200美元. 3.在储蓄帐户余额中增加200美元. 上述三个步骤的操作必须打包在一个事务中,任何一个步骤失…
关于数据库的ACID特性已经有很多的介绍,这里再重新归纳总结一下:   A(atomicity)原子性: 即事务要么全部做完,要么全部不做,不会出现只做一部分的情形,如A给B转帐,不会出现A的钱少了,B的钱却没有增加的情况 C(consistency)一致性: 指的是事务从一个状态到另一个状态是一致的,如A减少了100,B不可能只增加30. I(isolation)隔离性: 即一个事务在没有完成数据的提交修改时,对其它事务是不可见的.当然这里有个隔离级别的概念,在不同隔离级别下,这里会有不同的表…
事务的隔离是并发操作中需要理解清楚的问题.MySQL中共有4种不同的隔离级别,这4种隔离级别分别是: 隔离级别类型 影响结果 READ UNCOMMITTED(未提交读) 事务将会读取到未提交的数据,可能会造成脏读.可重复读和幻读的现象,是一种较低的隔离级别,在实际中较少使用 READ COMMITTED(提交读) 该种隔离级别在事务1没有提交或回滚时,事务2可避免脏读,但是在事务1提交或回滚之后,事务2出现了可重复读和幻读的情况 REPEATABLE READ(可重复读) 可重复读是MySQL…
1 .事物操作数据库的四大特性(ACID) 1.原子性 (Atomicity) 原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚. 2.一致性 (Consistency) 一致性:简单来说就是在事物执行前和执行后,必须保持数据的一致. 举个例子:A和B之间进行转账,A和B的钱加起来一种是2000块钱,那么无论他们之间 进行了多少次的转账操作,最后的钱数加起来应该还是等于2000. 3.隔离性 (Isolation) 隔离性:一个事物执行的过程当中,不能被其他的事物干扰.比如有事…
MySQL表的四种分区类型 一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区.当然也可根据其他的条件分区. 二.为什么要对表进行分区 为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率. 分区的一些优点包括: 与单个磁盘或文件系统分区相比,可以存储更多的数据. 对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有…
Linux查看MySQL版本的四种方法 1 在终端下执行 mysql -V 2 在help中查找 mysql --help |grep Distrib 3 在mysql 里查看 select version() 4 在mysql 里查看 status…
mysql的四种启动方式: .mysqld 启动mysql服务器:./mysqld --defaults-file=/etc/my.cnf --user=root 客户端连接: mysql --defaults-file=/etc/my.cnf or mysql -S /tmp/mysql.sock .mysqld_safe 启动mysql服务器:./mysqld_safe --defaults-file=/etc/my.cnf --user=root & 客户端连接: mysql --defa…
ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库适配器来处理.目前的数据库包括Mysql.MsSQL.PgSQL.Sqlite.Oracle.Ibase以及PDO的支持,如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式:   第一种 在项目配置文件里面定义 在项目的配置文件Config/config.php 文件里,增加以下数据库配置选项…
MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据.BLOB类型实际是个类型系列(TinyBlob.Blob.MediumBlob.LongBlob),除了在存储的最大信息量上不同外,他们是等同的. MySQL的四种BLOB类型 类型                  大小(单位:字节) TinyBlob             最大 255 Blob                  最大 65K MediumBlob     最大 16M Lon…
前言 数据库是一个共享资源,为了充分利用数据库资源,发挥数据 库共享资源的特点,应该允许多个用户并行地存取数据库.但这样就会产生多个用户程序并 发存取同一数据的情况,为了避免破坏一致性,所以必须提供并发控制机制. 并发控制是以事务(transaction)为单位进行的. 什么时候表锁什么时候行锁? 行锁是指的innodb引擎,只有通过索引条件检索数据,InnoDB才会使用行级锁,否则,InnoDB将使用表锁. 查看表锁 #查看是否有锁表的情况 show OPEN TABLES where In_…
MySQL常用的引擎有:InnoDB存储引擎.MyISAM存储引擎.MEMORY存储引擎.Archive存储引擎 InnoDB存储引擎 InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎. InnoDB主要特性有: 1.InnoDB给MySQL提供了具有提交.回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎.InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读.这些功能增加了多 用…
一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区.当然也可根据其他的条件分区. 二.为什么要对表进行分区为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率. 分区的一些优点包括: 与单个磁盘或文件系统分区相比,可以存储更多的数据.对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据.相…
1:在终端下:mysql -V或mysql -Version. 以下是代码片段: [shengting@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686) 2:在mysql中:mysql> status; 以下是代码片段: mysql> status; -------------- mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (…
1 在终端下执行 mysql -V 2 在help中查找 mysql --help |grep Distrib 3 在mysql 里查看 select version() 4 在mysql 里查看 status 欢迎补充~…
1:在终端下:mysql -V. 以下是代码片段: [shengting@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686) 2:在mysql中:mysql> status; 以下是代码片段: mysql> status; -------------- mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686) Connectio…
1 命令行中使用status可以查看. mysql> status;--------------mysql  Ver 14.14 Distrib 5.5.25a, for Linux (x86_64) using readline 5.1 Connection id:          33348Current database:Current user:           root@localhostSSL:                    Not in useCurrent page…
方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:mysql> set password for root@localhost = password('123'); 方法2:用mysqladmin 格式:mysqladmin -u用户名 -p旧密码 password 新密码 例子:mysqladmin -uroot -p123456 password 12…
1:在终端下:mysql -V. 以下是代码片段: [shengting@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686) 2:在mysql中:mysql> status; 以下是代码片段: mysql> status; -------------- mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux-gnu (i686) Connectio…
原文链接:http://blog.csdn.net/yangling132/article/details/50932705[侵删] TCP/IP协议,通常我们通过来连接MySQL,各种主要编程语言都是根据这个协议实现了连接模块 Unix Socket协议,这个通常我们登入MySQL服务器中使用这个协议,因为要使用这个协议连接MySQL需要一个物理文件,文件的存放位置在配置文件中有定义,值得一提的是,这是所有协议中最高效的一个. Share Memory协议,这个协议一般人不知道,肯定也没用过,…
事务的基本要素: 原子性(atomicity):事务开始后的全部操作, 要么全部执行成功,如果中间出现错误,事务回滚到事务开始前的状态. 一致性(Consistency):事务开始后,数据库的完整性约束没有被破坏.例如:A向B转账,A扣除了金额,B却没收到 隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同事务之间没有彼此没有干扰. 持久性(Durability):事务完成后,事务对数据库的所有更新都保留到数据库,不能进行回滚. 事务并发问题 脏读:事务A读取了事务B更新的…
1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为"张三","张猫三"."三脚猫","唐三藏"等等有"三"的记录全找出来. 另外,如果需要找出u_name中既有"三"又有"猫"的记录,请使用a…
1 普通连接查询 select 表1字段1,表2字段2,from 表1,表2,where 表1.字段1==表2.字段2 2 inner join查询 select 表1字段1 ,表2字段2,from 表1 INNER JOIN 表2 ON  表1.字段1==表2.字段2 与普通查询类似 3 LEFT JOIN查询,左联查询 select 表1字段1 ,表2字段2,from 表1 LEFT JOIN 表2 ON  表1.字段1==表2.字段2 即使右表为空,也从左表获取所选取字段的数据 4 RIG…
在实际的业务场景中,并发读写引出了和事务控制的需求.优秀的事务处理能力是关系型数据库(特别是oracle等商用RDBMS)相对于正当风口的NoSQL数据库的一大亮点.但这也从另一方面说明了事务控制的复杂性--正因为过于复杂,大部分NoSQL都没提供事务支持或只提供部分事务支持. ACID 一个数据库事务是"一个被视为单一的工作单元的操作序列".一个良好的事务处理系统,必须具备四个标准特性: 原子性(Atomicity):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作…
sql标准中,有四种隔离级别,各个离级别都有各自的规则,隔离级别越低,允许并发越大,消耗的资源越少,但是越不安全,下面就mysql数据库来分别介绍一下(每个存储引擎实施的隔离级别会有稍微的不同)mysql 动态修改隔离级别的命令SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL{READ UNCOMMITTED| READ COMMITTED| REPEATABLE READ| SERIALIZABLE} 1:READ UNCOMMITTED在这…
mysql事务并发问题 ACID什么的就不啰嗦了.mysql多个事务并发的时候,可能会出现如下问题: 1. 更新丢失 即两个事务同时更新某一条数据,后执行的更新操作会覆盖先执行的更新操作,导致先执行的更新结果丢失. 2. 脏读 即一个事务会读到另一个事务尚未提交的数据更新,由于该数据更新可能会回滚,所以称之为脏读. 3. 不可重复读 即一个事务中对同一行数据读取两次,会得到不同的结果.原因是在该事务两次读取之间,其他事务会修改此数据. 4. 幻读 即一个事务对同一个表执行两次查询,会得到相同的结…
提到MySQL优化,索引优化是必不可少的.其中一种优化方式 --索引优化,添加合适的索引能够让项目的并发能力和抗压能力得到明显的提升. 我们知道项目性能的瓶颈主要是在"查(select)"语句,要提升"查"这一性能,mysql索引是必不可少的.接下来总结一下mysql常见的四种索引 一. 四种索引(主键索引/普通索引/全文索引/唯一索引) 1.索引的添加  1.1主键索引的添加 当一张表,把某个列设为主键的时候,则该列就是主键索引 create table a( i…
MySQL常用的四种引擎的介绍 (1):MyISAM存储引擎: 不支持事务.也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表 支持3种不同的存储格式,分别是:静态表:动态表:压缩表 静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复:缺点是占用的空间通常比动态表多(因为存储时会按照列的宽度定义补足空格)ps:在取数据的时候,默认会把字段后面的空格去掉,如果不注意会把…
MySQL Server 有四种类型的日志——Error Log.General Query Log.Binary Log 和 Slow Query Log. 第一个是错误日志,记录mysqld的一些错误.第二个是一般查询日志,记录mysqld正在做的事情,比如客户端的连接和断开.来自客户端每条Sql Statement记录信息:如果你想准确知道客户端到底传了什么给服务端,这个日志就非常管用了,不过它非常影响性能.第四个是慢查询日志,记录一些查询比较慢的SQL语句——这种日志非常常用,主要是给开…
对于MySQL事务有四种隔离级别,分别是以下四种: 1.读未提交 2.读提交 3.可重复读 4.串行化(加锁) 对于隔离我们都是说在并发的情况下发生的事情,读取的数据在并发的情况下会发生什么情况. 并且我们知道所有的事务都是原子性操作.但是在这些事务中隔离等级不一样,并发的速度和安全情况都是不一样的.等级越高,速度越慢但越安全. 1.读未提交:表示根本什么措施都没有,A读取了两次数据,但是B中间修改了一下数据,那么对于A来说,就会出现两次读取的数据不一致的情况. 2.读提交:还是A读取了两次数据…
什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消.也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做. 事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交.如果其中一个步骤失败,将发生回滚操作,撤消之前到事务开始时的所以操作. 事务的四大特征(ACID    原子性( Atomicity ).一致性( Consistency ).隔离性( Isolation )和持续性( Durability )) 原…