• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySql 知识点之事务、索引、锁原理与用法解析

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

    事务

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

    索引

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

    SELECT userName FROM user WHERE userId = 1;
    
    

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

    在这里我们主要讨论下行级锁

    引擎MyISAM,可以理解为锁整张表,可以同时读,不可以同时写。在锁定期间,其它进程无法对该表进行写操作,如果是写锁,则其它进程则不允许读。

    引擎INNODB,单独一行记录加锁,可以同时读,不可同时写。行级锁开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

    由于InnoDB预设是Row-Level Lock,所以只有[明确]的指定主键,MySQL才会执行Row lock,否则MySQL将会执行Table Lock

    例1:(明确指定主键,并且有此记录,Row Lock)

    SELECT * FROM products WHERE id='3' FOR UPDATE;
    SELECT * FROM products WHERE id='3' and type=1 FOR UPDATE;
    
    

    例2: (明确指定主键,若查无此记录,无lock)

    SELECT * FROM products WHERE id='-1' FOR UPDATE;
    
    

    例3: (无主键,table lock)

    SELECT * FROM products WHERE name='Mouse' FOR UPDATE;
    
    

    例4: (主键不明确,table lock)

    SELECT * FROM products WHERE id>'3' FOR UPDATE;
    
    

    例5: (主键不明确,table lock)

    SELECT * FROM products WHERE id LIKE '3' FOR UPDATE;
    
    

    注1: FOR UPDATE仅适用于InnoDB,且必须在交易区块(BEGIN/COMMIT)中才能生效。
    注2: 要测试锁定的状况,可以利用MySQL的Command Mode ,开二个视窗来做测试。

    更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL索引操作技巧汇总》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

    希望本文所述对大家MySQL数据库计有所帮助。

    您可能感兴趣的文章:
    • Mysql数据库高级用法之视图、事务、索引、自连接、用户管理实例分析
    • MySql 索引、锁、事务知识点小结
    • MySQL数据库的事务和索引详解
    上一篇:MySQL 查询速度慢与性能差的原因与解决方法
    下一篇:MySQL数据库开发的36条原则(小结)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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