MySQL 8.0发布说明
MySQL 8.0源码文档10bet官方网站
在大多数情况下,您可以通过计数磁盘试验来估计查询性能。对于小表,您通常可以在一个磁盘寻找中找到一行(因为索引可能缓存)。对于更大的表来说,您可以估计使用B-Tree索引,您需要这一跳来查找行:日志(
.row_count.
) /日志(index_block_length
/ 3 * 2 / (index_length
+data_pointer_length.
) + 1
在MySQL中,索引块通常为1,024字节,数据指针通常为四个字节。对于一个500,000行表,键值长度为三个字节(大小MEDIUMINT
),公式表示日志(500000)/日志(1024/3 * 2 / (3 + 4))+ 1
=4
寻求。
这个索引将需要大约500,000 * 7 * 3/2 = 5.2MB的存储(假设典型的索引缓冲区填充率为2/3),因此您可能在内存中有很多索引,因此只需要一次或两次调用来读取数据来找到行。
但是,对于写操作,您需要4个查找请求来找到放置新索引值的位置,通常需要两个查找请求来更新索引和写入行。
前面的讨论并不意味着应用程序性能会因日志而缓慢下降N
.只要所有数据都被操作系统或MySQL服务器缓存,当表变大时,速度只会略微变慢。当数据变得太大而不能被缓存时,事情就会开始变慢,直到应用程序只被磁盘搜索(随着日志的增加而增加)绑定N
).为了避免这种情况,可以随着数据的增长而增加键缓存的大小。为MyISAM
表的键缓存大小由key_buffer_size
系统变量。看第5.1.1节,“配置服务器”.