mysql性能入门

  • left join,right join,inner join,select in

    最基本的sql语句,连表查询性能并没有想得那么差。尽量避免大表连小表的操作。

  • mysql的锁有很多类,主要区别在于两点

    • 锁粒度
    • 互斥性

    mysql有一下几类锁

    1. Shared and Exclusive Locks:读写锁
    2. Intention Locks:意向锁:表或者行级别锁
      1. SELECT … LOCK IN SHARE MODE IS锁。读锁
      2. SELECT … FOR UPDATE IX锁。写锁
    3. 行级锁:用于锁定某一行数据,粒度
    4. gap索引: 范围锁,a gap between index records, or a lock on the gap before the first or after the last index record。在read_repeatable级别有效,read_commited无效
    5. Next-Key Locks: 行锁+gap锁,在read_repeatable级别有效,read_commited无效
    6. Insert Intention Locks: 插入索引
  • 事务

    • 隔离级别
    • Locking Reads
      • share mode:SELECT … LOCK IN SHARE MODE。共享读锁
      • exclusive mode:SELECT … FOR UPDATE。排他锁
  • 索引:

    1. 聚簇索引:索引和数据一起存储,读取效率高
    2. 二级索引:存储聚簇索引,读两次磁盘
    3. 主键uuid vs auto_increment bigint:二级索引存的是主键值,uuid太大。读取磁盘速度慢。索引不连续