分布式存储--Mysql--序列1--聚簇索引&非聚簇索引
来源:互联网 发布:linux awk 函数 编辑:程序博客网 时间:2024/05/16 04:42
从本篇开始,将进入分布式系统的存储的讨论。存储一直是设计分布式系统中最最核心的问题,这里面设计到诸多设计策略。
而Mysql作为一个开源的数据库,在各大互联网公司使用极为普遍。本系列将从Mysql开始,一步步展示关于存储设计的诸多策略。
说到InnoDB和MyISAM的区别,很多人都会提到一个支持事务,一个不支持;一个是行锁,一个是表锁(这个其实不准确,后面会详细阐述)。
但跟日常使用最密切相关的,更基本的,其实是另外一个关键区别:InnoDB是聚簇索引,MyISAM是非聚簇索引。如下图所示:
MyISAM的非聚餐索引:数据和索引是分开存放的
InnoDB的聚簇索引: 数据和主键索引是存放在一起的,其他索引叶子结点存放的主键id。
那这种不同,对于我们日常使用,又有什么影响呢?
查询
很显然,对于MyISAM,要查2次,先查1次索引,再查一次数据; 而对于InnoDB的主键查询,因为数据和索引存放在一起,只需要查1次,显然性能更快。
所以如果你采用了InnoDB,尽量让上层业务通过主键查询。
插入
对于MyISAM,数据总是顺序在文件末尾添加;而对于InnoDB,如果主键是自增ID,那数据也会是在文件末尾按顺序append。
但如果你用了InnoDB,但主键又不是自增,那就会发生B+树中间叶子结点的split,对应的,就会发生文件的随机读写,而不是顺序写入,这会极大的影响性能。
所以,如果你采用了InnoDB,尽量把主键设成自增ID。
下篇将开始介绍索引的设计策略。
0 0
- 分布式存储--Mysql--序列1--聚簇索引&非聚簇索引
- Mysql--序列1--聚簇索引&非聚簇索引
- 分布式存储--Mysql--序列2--索引的设计策略
- MySQL 聚簇索引 和 非聚簇索引
- MySQL 聚簇索引和非聚簇索引
- mysql聚簇索引与非聚簇索引
- 索引的分布式存储
- mysql中的索引(聚簇索引和非聚簇索引)
- mysql聚簇索引和非聚簇索引以及二级索引
- MySQL索引:聚簇索引与非聚簇索引的区别
- MySQL索引:聚簇索引与非聚簇索引的区别
- 聚簇索引、非聚簇索引、覆盖索引
- 聚簇索引、非聚簇索引、覆盖索引
- MySQL索引与存储
- mysql 存储索引
- mysql 存储,索引
- Mysql存储及索引
- mysql 优化(3)聚簇索引和非聚簇索引
- Android 省市县 三级联动(android-wheel的使用) 标签: Android 进阶学习
- android listview级联三菜单选择地区,本地数据库sqlite级联地区,item选中不变色
- 【Data Structures】 12. Hashing, HashMap and HashSet in Java
- 【寒江雪】修改BMP图像数据
- android中用ExpandableListView实现三级扩展列表(附源码)
- 分布式存储--Mysql--序列1--聚簇索引&非聚簇索引
- POJ-----1006---Biorhythms扩展欧几里得
- Clone Graph
- VMware虚拟机中的3种网络连接的模式
- Java反射机制学习
- Android仿IOS级联菜单_ListView实现区域级联选择效果
- Android仿IOS级联菜单_ListView实现区域级联选择效果
- 功能全面的电商微信小程序源码下载
- Android-PickerView