• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 估计查询性能

    在大多数情况下,您可以通过计算磁盘搜索次数来估计查询性能。对于小型表,通常可以在一个磁盘搜索中找到一行(因为索引可能已缓存)。对于更大的表,您可以估计,使用B树索引,您需要进行许多查找才能找到行:。log(row_count)/ log(index_block_length/ 3 * 2 /(index_length + data_pointer_length)) + 1

    在MySQL中,索引块通常为1,024字节,数据指针通常为四个字节。对于一个键值长度为三个字节(大小为MEDIUMINT)的500,000行表,该公式表示log(500,000)/log(1024/3*2/(3 +4)) + 1=搜索4

    该索引将需要大约500,000 * 7 * 3/2 = 5.2MB的存储空间(假设典型的索引缓冲区填充率为2/3),因此您可能在内存中拥有很多索引,因此只需要一个或两个调用即可读取数据以查找行。

    但是,对于写操作,您需要四个搜索请求来查找在何处放置新索引值,通常需要两个搜索来更新索引并写入行。

    前面的讨论并不意味着您的应用程序性能会因log缓慢下降N。只要所有内容都由OS或MySQL服务器缓存,随着表的增加,事情只会变得稍微慢一些。在数据变得太大而无法缓存之后,事情开始变得缓慢得多,直到您的应用程序仅受磁盘搜索约束(随日志增长N)。为避免这种情况,请随着数据的增长而增加密钥缓存的大小。对于MyISAM表,键缓存大小由key_buffer_size系统变量控制。请参见“配置服务器”。