赞
踩
事务是用于处理操作量大、复杂度高的数据。比如在人员管理系统中,要删除一个人员的信息,不仅要删除他的基本资料信息,还要删除与之相关的信息,比如说他的文章、邮箱等等。这些数据库操作语句就构成了一个事务。
在MySQL中,事务是一组SQL语句的执行,它们被视为一个单独的工作单元。事务需要注意以下几个特点:
一般来说,事务必须满足四个条件(ACID),如下:
在MySQL中命令行的默认配置下,事务都是自动提交的,即执行完SQL语句后就自动执行commit操作。因此要显式地开启一个事务需要使用命令BEGIN或START TRANSACTION或执行命令SET AUTOCOMMIT = 0,用来禁止当前会话的自动提交。
之前介绍过事务的ACID,其中隔离性强调数据库支持大量并发事务对其数据进行修改或者读写操作,在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务,也就是多个用户对同一数据进行操作。并发虽然是必须的,但是可能会带来以下问题:
总的来说,不可重复读的重点是修改,幻读的重点是删除或新增。以下用具体的例子来说明。
SQL标准定义了四个隔离级别:
索引是对数据库表中一列或多列的值进行排序的一种结构。索引的建立对于MySQL的高效运行是很重要的,因为索引可以大大提高MySQL的检索速度。索引是占据物理空间的,在不同的存储引擎中,索引存在的文件也不同。
MySQL中常用的索引数据结构有:B-Tree索引、B+Tree索引和Hash索引等。
B-Tree索引
B-树是专门为外部存储器设计的一种平衡的多路查找树,它类似于普通的平衡二叉树,不同的一点是B-树允许每个节点有更多的子节点,B-树具有以下特点:
B+Tree索引
B+树是B-树的变体,也是一种多路搜索树,在MySQL中索引默认使用这种结构。
参考博客:link
Hash索引
"=","In","<=>"
查询,不支持任何范围查询,例如where price > 100
,这是因为经过相应的Hash算法处理之后Hash值的大小关系,并不能保证和Hash运算前一致。参考博客:link
红黑树是一种传统的用来搜索的平衡二叉树,这种树在一般情况下查询性能非常好,但当数据量非常大的时候,内存不够用,大部分数据只能存放在磁盘上,只有需要的数据才加载到内存中,而磁盘读取的时间远远超过了数据在内存中的比较时间,就会导致程序大部分时间会阻塞在磁盘I/O上,而索引的效率依赖于磁盘 I/O 的次数,红黑树这类平衡二叉树是通过旋转来保持平衡的,而旋转是对整棵树的操作,若部分数据加载到内存中则无法完成旋转操作,而且平衡二叉树的高度相对较大,这样的话,逻辑上很近的节点在物理上也会相隔较远,无法很好地利用磁盘预读(局部性原理),所以诸如红黑树这类平衡二叉树在数据库和文件系统上就被pass掉了。
快速索引需要有效的减少磁盘 I/O 次数,B+Tree和B-Tree的比较主要集中在索引的效率上:
参考博客:link
索引从物理上可以分为聚簇索引和非聚簇索引,有时也称为辅助索引或二级索引。聚簇是为了提高某个属性(或属性组)的查询速度,把这个或这些属性(称为聚簇码)上具有相同值的元组集中存放在连续的物理块。
聚簇索引
聚簇索引(clustered index)不是单独的一种索引类型,而是一种数据存储方式。这种存储方式是依靠B+树来实现的,根据表的主键构造一棵B+树并且B+树的叶子节点存放的都是表的行记录数据时,方可称该主键索引为聚簇索引。聚簇索引也可理解为,B+树叶子节点存放的是整行数据记录和索引值,找到索引也就找到了数据。
非聚簇索引
数据和索引是分开的,可以理解为,B+树叶子节点存放的是指向实际记录行的指针和索引值。
虽然InnoDB和MyISAM存储引擎都默认使用B+树结构存储索引,但是只有InnoDB的主键索引才是聚簇索引,InnoDB中的辅助索引以及MyISAM使用的都是非聚簇索引。每张表最多只能拥有一个聚簇索引。
InnoDB是MySQL 5.5版本及之后MySQL默认的事务型引擎,也是最重要和使用最广泛的存储引擎。它被设计成大量的短期事务,短期事务大部分情况下是可以正常提交的,很少被回滚。InnoDB自动崩溃恢复的特性使得它在非事务存储需求中也很流行,因此,除非有非常特别的原因需要使用其他存储引擎,否则就优先考虑InnoDB引擎。而MyISAM是MySQL 5.5版本之前的默认引擎,虽然后来被InnoDB所取代,MyISAM仍因其简单性、高性能以及对全文搜索的支持而被广泛使用。
MySQL的锁是计算机协调多个进程或线程并发访问某一资源的机制。
表级锁:每次操作锁住整张表。开销小,加锁快,不会出现死锁;锁定粒度大,发生锁冲突的概率高,并发度低。
行级锁:每次操作锁住一行数据。开销大,加锁慢,会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。