高性能Mysql笔记(一)

来源:互联网 发布:adc0804中文数据手册 编辑:程序博客网 时间:2024/06/11 19:31

第一章 Mysql架构

  • 1. 读锁(Read Lock)/写锁(Write Lock)

    • 又称共享锁和排他锁
    • 读锁是共享的,读锁不会阻塞。
    • 写锁是排他的,会阻塞其他的读锁和写锁。
  • 2. 锁

    • 表锁: 开销小,加锁快,不出现死锁。

      • Myisam只支持表锁。
      • 写锁比读锁优先。(读锁可能会一直阻塞)。
    • 行锁:开销大,支持最大的并发。

      • innodb和falcon存储引擎支持行锁。
  • 3. 事务

    • 概念

      • 事务是一组原子性的SQL查询语句,也可以看做是一组工作单元。
      • 要么全部执行,要么一句也不会执行。
    • ACID

      • 原子性
      • 一致性:
      • 隔离性:某个事务的结果只有在完成之后才能对其他事务可以见。
      • 持久性
  • 4. 隔离级别

    • 读未提交

      • 所有事务可以“看到”未提交事务的执行结果。会出现脏读。
    • 读提交

      • 只能“看到”已提交事务的执行结果。
      • 会出现不可重复读,执行同一个语句,看到的结果可能不同。
    • 可重复读

      • mysql默认的隔离级别。
      • 确保多事务并发时能看到同样的数据。
      • 可能导致幻影读,如果另外的事务insert一行,可能出现两次结果不一样。InnoDB和Falcom通过并发控制解决了幻读问题。
      • more: http://www.cnblogs.com/kingcat/p/3334317.html
    • 可串行化

      • 最高的隔离级别
      • 强制事务排序,在读数据行枷锁。可能会导致大量的超时和锁竞争现像。
  • 5. 自动提交

    • set AUTOCOMMIT=0 ,用户将一直处于某个事务中,直到用户执行一个commit或者rollback。
    • mysql默认autocommit (自动提交)。
  • 6. 多版本并发控制

    • 多版本并发控制(Multiversion Concurrency Controll MVCC)

    • MVCC的实现,通过保存数据在某个时间点的快照来实现的。这意味着一个事务无论运行多长时间,在同一个事务里能够看到数据一致的视图。根据事务开始的时间不同,同时也意味着在同一个时刻不同事务看到的相同表里的数据可能是不同的。
    • MVCC的基本特征:
      每行数据都存在一个版本,每次数据更新时都更新该版本。
      修改时Copy出当前版本随意修改,各个事务之间无干扰。
      保存时比较版本号,如果成功(commit),则覆盖原记录;失败则放弃copy(rollback)
    • more:http://blog.csdn.net/chen77716/article/details/6742128
  • 7. 存储引擎

    • MySQL默认的存储引擎是MyISAM,其他常用的就是InnoDB了。

    • 这里写图片描述

  • 0 0
    原创粉丝点击