MySql知识点之事务,索引,锁原理与用法解析

  

本文实例讲述了MySql知识点之事务,索引,锁原理与用法。分享给大家供大家参考,具体如下:

  

事务

  
      <李>事务概念   
  

事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎执行一组操作语句,那么久执行所有的操作,如果其中有任何一条崩溃或其他原因无法执行,所有语句将不会执行。也就是说事务内的语句,要么全部执行成功,要么全部执行失败。

  
      <李>事务特性酸   
        <李>原子性(原子性)   
      

    一个事务被视为最小工作单元,不可拆分,整个事务所有的操作要么全部提交成功,要么全部失败回滚,不可只执行部分。

      
        <李>一致性(一致性)   
      

    数据库从一个一致性的状态转换到另外一个一致性的状态。数据库某个状态下符合所有的完整性约束的状态。

      
        <李>隔离性(隔离)   
      

    通常来说,一个事务所做的修改在最终提交前,对其他事务是不可见的。此时应该保证各个事务要进行隔离,事务之间不可相互干扰。

      
        <李>持久性(耐久性)   
      

    一旦事务提交,所有的修改会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。

      李   
  
      <李>事务的隔离级别   
        <李>读未提交(未提交读)   
      

    事务中的修改,即使没有提交,对其他事务也是可见的,事务可以读取未提交的数据,造成脏读,也会造成不可重复。

      
        <李>读取提交(提交读)   
      

    大多数数据库的默认级别是读承诺(MySQL默认可重复读),该级别事务解决了脏读,但是会出现不可重复读,因为两次执行同样的查询,查询结果不一样。

      
        <李>可重复读(可重复读)   
      

    该级别解决了脏读,保证可重复读,但是理论上,可重复读隔离级别还是无法解决幻读,所谓幻读,指的是党某个事物在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录.InnoDB和XtraDB存储引擎通过多版本并发控制MVVC解决了幻读的问题。

      
        <李>序列化(可串行化)   
      

    可串行化是隔离最高级,它强制了事务串行执行,完全避免了幻读,简单来说序列化会在读取的每一行加锁,所以会导致大量的等待超时和锁争用的问题,实际开发中很少使用。

      李   
  

索引

  
      <李>索引概念   
  

索引是存储引擎用户快速找到记录的一种数据结构,举例

        从用户选择用户名,用户id=1;      之前      

如果在标识列上加上索引,则MySQL将使用该索引找到userId的行,也就是说,MySQL先在索引上按值进行查找,然后返回所有包含该值的数据行。

  
      <李>索引方式   
        <李> b - tree索引   
      

    使用b -树数据结构来存储数据,大多MySQL引擎都支持该索引.B-Tree索引可以加快访问数据的速度,因为b -树对索引列顺序组织存储,范围查找快。

      
        <李>哈希索引   
      

    哈希索引基本哈希表实现,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码的哈希码值较小。哈希索引将所有的哈希码存储在索引中,同时在哈斯表中保存指向每个数据行的指针.MySQL中只有记忆引擎显示支持哈希索引。

      李   
  
      <李>索引类型   
        <李>普通索引   
      

    主要任务加快对数据的访问

      
        <李>唯一索引   
      

    普通索引是允许数据重复的,如果确定了某列数据不会重复,则可创建唯一索引,唯一索引有两个好处,索引更有效:插入新数据,如果重复,MySQL拒绝插入。

      
        <李>主键索引   
      

    主键本身默认创建索引

      
        <李>全文索引   
      

    文本字段上的普通索引只能加快对出现在字段内最前面的字符串进行的检索操作,如果字段里存放的是由几个或者多个单词构成的大段文字,普通索引就不行了,这种场合用全文索引比较合适

      

    查询效率:唯一索引祝辞自增主键在主键

      

    插入:主键在自增主键在唯一索引

      李

    MySql知识点之事务,索引,锁原理与用法解析