索引的存储-MyISAM

简介: 索引的存储-MyISAM

在MySQL数据库中,MyISAM存储引擎使用B树索引来优化查询操作,提高查询效率。B树是一种平衡树,能够快速定位数据记录。

在MyISAM中,所有的数据和索引都是分开存储的。每个表都有两个文件,一个是以“.MYD”为后缀的数据文件,另一个是以“.MYI”为后缀的索引文件。其中,数据文件存储实际数据记录,索引文件存储数据的索引信息。

索引文件由多个索引块组成,每个索引块大小默认为1KB。当往表中插入一条新纪录时,MyISAM会按照索引列的值,将这条记录插入到合适的索引块中。如果插入的记录导致索引块中的记录数超过了预设的阈值,则该索引块会被分裂成两个,以保证索引块中的记录数不超过阈值。这个过程称为“索引块分裂”。

索引文件也会产生碎片,MyISAM提供了一个OPTIMIZE TABLE命令来优化表,整理碎片。该命令会重新创建索引文件,并将数据记录按照索引列重新排序,使得数据和索引更加紧凑,提高查询效率。

需要注意的是,MyISAM引擎只支持表级锁定,而不支持行级锁定。这意味着,在执行写操作时,需要锁定整个表,因此在高并发、写入频繁的场景下,可能会出现锁等待问题,影响系统性能。

目录
相关文章
|
JavaScript
新员工webpack打包后上传服务器页面空白
新员工webpack打包后上传服务器页面空白
227 0
|
Docker 容器
docker 运行 elasticsearch + kibana + head 集群
docker 运行 elasticsearch + kibana + head 集群
173 1
|
搜索推荐 算法 Java
快速排序------一种优雅的排序算法
快速排序------一种优雅的排序算法
103 0
|
存储 缓存 算法
你真的懂分布式一致性吗?从业务开发视角看分布式系统一致性
分布式的本质:利用多台机器上进行计算和存储,为了防止某些台机器发生网络延迟、节点故障等问题,就需要使用”算法或者技术“协调”多台机器来一起工作,确保系统的正确性和健壮性。 我们的业务系统与业务系统的交互:因为是集群与集群之间的互相连接,某应用A连接应用B的时候连不通了(直接tcp无法建立连接 或者连接超时),这个时候其实分区就发生了, 而因为集群的存在,这分区发生的概率非常小, 这个时候,我们是选择AP还是CP呢?这个要根据业务场景以及当前系统间交互的复杂度而定。
341 0
|
关系型数据库 数据库 PostgreSQL
PostgreSQL 创建表格
PostgreSQL 创建表格
269 0
|
机器学习/深度学习
我下载了一个DNN模块的源码,如何加入我的DNN开发环境并编辑它?
下载源代码包 首先你需要得到模块的源代码包,对于DNN官方的模块,都会提供一个源代码包。对于非官方的模块,如果是开源的,也会提供一个源代码包。 比如Announcement模块:   对于代码包的区别,请参考这个: DNN Install包,DNN Source包和DNN StarterKit包之间有什么区别? 安装源码包: 安装源代码包和安装其它模块没有区别,正常安装就可以了,但要注意的一点是:官方的源代码包都会自动安装所有需要的源文件,但如果是第三方的源代码包,有时不能完全安装所有文件,这时你把源代码包解压缩后直接覆盖DesktopModules下的目录即可。
746 0
|
1天前
|
云安全 人工智能 自然语言处理
|
6天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
314 116

热门文章

最新文章