从磁盘的物理结构来看存取信息的最小单位是扇区,一个扇区是512字节;
从操作系统对硬盘的存取管理来看,存取信息的最小单位是簇,簇是一个逻辑概念,一个簇可以是2、4、8、16、32或64个连续的扇区。一个簇只能被一个文件占用,哪怕是只有1个字节的文件,在磁盘上存储时也要占用一个簇,这个簇里剩下的扇区是无用的。例如用NTFS文件系统格式化的时候默认是8个扇区组成一个簇,即4096字节。所以你如果保存了一个只有1字节的文件(例如字母N),它在磁盘上实际也要占用4096字节(4K),所以“簇”也可以理解为操作系统存取信息的最小单位。
1、mysql数据库是怎么存储、获取数据的?大概是:
select * from user where userName = "李明";
不懂
2、索引为什么会提高速度?
先明白一些基本原理。索引是数据结构,是一种数据的存储方式。
select * from user where userName = "李明";
sql语句执行,耗费的时间分两部分:1、查找该数据“李明”的地址。2、到磁盘获取该条数据(包括cpu告知磁盘控制器数据地址、磁盘寻道、数据返回给cpu)
而索引的作用就在于第一步,cpu在内存中遍历查找“李明”的地址速度变快了。
mysql是可以持有数据的地址吗?
问题总结(数据库是怎么工作的?):mysql应该在内存中持有所存储数据的地址,执行一条查询语句时,先查找出来该数据的地址,再把地址告知磁盘控制器。
磁盘控制器按地址拿到数据发给mysql程序。