索引的存储-MyISAM

简介: 索引的存储-MyISAM

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

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

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

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

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

目录
相关文章
|
JavaScript
新员工webpack打包后上传服务器页面空白
新员工webpack打包后上传服务器页面空白
228 0
|
Docker 容器
docker 运行 elasticsearch + kibana + head 集群
docker 运行 elasticsearch + kibana + head 集群
178 1
|
搜索推荐 算法 Java
快速排序------一种优雅的排序算法
快速排序------一种优雅的排序算法
117 0
|
存储 缓存 算法
你真的懂分布式一致性吗?从业务开发视角看分布式系统一致性
分布式的本质:利用多台机器上进行计算和存储,为了防止某些台机器发生网络延迟、节点故障等问题,就需要使用”算法或者技术“协调”多台机器来一起工作,确保系统的正确性和健壮性。 我们的业务系统与业务系统的交互:因为是集群与集群之间的互相连接,某应用A连接应用B的时候连不通了(直接tcp无法建立连接 或者连接超时),这个时候其实分区就发生了, 而因为集群的存在,这分区发生的概率非常小, 这个时候,我们是选择AP还是CP呢?这个要根据业务场景以及当前系统间交互的复杂度而定。
345 0
|
关系型数据库 数据库 PostgreSQL
PostgreSQL 创建表格
PostgreSQL 创建表格
277 0
|
机器学习/深度学习
我下载了一个DNN模块的源码,如何加入我的DNN开发环境并编辑它?
下载源代码包 首先你需要得到模块的源代码包,对于DNN官方的模块,都会提供一个源代码包。对于非官方的模块,如果是开源的,也会提供一个源代码包。 比如Announcement模块:   对于代码包的区别,请参考这个: DNN Install包,DNN Source包和DNN StarterKit包之间有什么区别? 安装源码包: 安装源代码包和安装其它模块没有区别,正常安装就可以了,但要注意的一点是:官方的源代码包都会自动安装所有需要的源文件,但如果是第三方的源代码包,有时不能完全安装所有文件,这时你把源代码包解压缩后直接覆盖DesktopModules下的目录即可。
749 0
|
1天前
|
数据采集 人工智能 安全
|
10天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
906 150