zoukankan      html  css  js  c++  java
  • mysql常用的存储引擎

    索引分为两种,聚集索引和非聚集索引

    聚集索引指的是叶子顺序和物理地址顺序一致

    非聚集索引指的是只有叶子顺序是连接着的,物理地址则不一致

    常用的存储引擎

    mysql常用的存储引擎有Innodb和Myisam,都是基于B+树实现的。

    Innodb

    1.Innodb默认聚集索引,因此他的索引文件就是包含数据文件内容,索引叶子节点直接保存数据(.idb数据文件)

    (1).主键就是聚集索引

    (2).在没有主键的情况下会将唯一非空索引作为聚集索引

    (3).如果都没有的情况下就会在内部生成隐式主键作为聚集索引,这个列是一个6字节(48位)的整数作为聚集索引

    2.Innodb默认是行级锁,行级锁是基于索引实现的,因此SQL中如果没有使用到索引的情况下就不会使用行级锁,而会换为使用表级锁,从而导致性能下降

    3.支持事务

    4.需要维护MVCC一致性(多版本并发控制),因此多出来了维护成本

     

     Myisam

    Myisam属于非聚集索引,因此他的数据文件内容和索引文件是分离的,索引叶子节点保存数据指针(.myd数据文件,.myi索引文件)

    1.不支持事务,崩溃后无法安全恢复

    2.比Innodb的查询速度更快

    3.Myisam使用的是表级锁,在同时有读和写的操作时候,即使读锁比写锁先进到锁等待队列,写锁也会先插入到读锁的前面先进行写的操作,因此在有大量写的操作时,Myisam可能会造成读取数据大量在阻塞的情况

    总结

    1.Innodb主键索引叫聚簇索引、其他索引都叫辅助索引(二级索引,也可以叫非聚簇索引),当使用辅助索引时,会先从辅助索引中找到对应的行key,然后再根据key去主键索引找对应的行数据,造成两次索引查找。

    2.Myisam的主键索引和辅助索引都是非聚簇索引,非聚簇索引的特性就是叶子节点不会保存行数据,而是保存数据记录的地址,再直接去数据文件中找。

     

  • 相关阅读:
    java学习网址大全
    Js 提示框
    api帮助文档及常见IT学习网站
    传参给 jsp
    jsp>action
    二级横菜单显示+sitemesh母板应用
    request,session
    map>json
    清空image画布并改变大小填充背景色
    取汉字首字母方法
  • 原文地址:https://www.cnblogs.com/nicori/p/12170748.html
Copyright © 2011-2022 走看看