看到一本书
描述了myisam引擎下的索引算法
是btree索引,索引里面存放了 使用索引的字段值 和 数据记录存放的物理地址
我想问下 一个表 假如有十条记录 而每条记录 由多个字段值组成的
eg 学生表 有 id name class sex 我给id建立索引!
然后索引表查到了 id 和物理地址
那么物理地址去数据表 也就是磁盘的物理地址中去找这个记录
那么一条记录存在磁盘空间的物理地址是一起的吗?还是一条记录里面一个字段值 一个物理地址?!
看到一本书
描述了myisam引擎下的索引算法
是btree索引,索引里面存放了 使用索引的字段值 和 数据记录存放的物理地址
我想问下 一个表 假如有十条记录 而每条记录 由多个字段值组成的
eg 学生表 有 id name class sex 我给id建立索引!
然后索引表查到了 id 和物理地址
那么物理地址去数据表 也就是磁盘的物理地址中去找这个记录
那么一条记录存在磁盘空间的物理地址是一起的吗?还是一条记录里面一个字段值 一个物理地址?!
mysql是按照行存储数据,因此一行数据是一个统一的物理地址;myslq的最小物理存储单位为block,如果行的字段少,可能会有多行存储在一个block中的情况。
列式数据库不同的字段存在在不同的物理地址。
5 回答3.3k 阅读✓ 已解决
3 回答3.7k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
5 回答1.4k 阅读
2 回答2.1k 阅读
文中的“物理地址”当然是指文件里的位置了,对应到磁盘实际的物理地址(磁道、扇区等,SSD的地址等)还需要操作系统做转换。
道理很简单,MyISAM直接复制数据库文件是可以用的,复制后磁盘实际物理地址是有变化的,而索引内容却不会改变。