MySQL如何处理庞大的数据库?

时间:2012-04-12 05:09:32

标签: mysql database performance

为了举例:

假设我的数据库有1个表,其中的字段是

id,first_name(VARCHAR 100 chars),last_name(VARCHAR 100 chars),about(VARCHAR 10,000 chars)

现在假设数据库是100 Gigs大。

在只有4 Gigs RAM的机器上,随机访问会如何?

每次查询时,查询是否会占用恒定时间?

1 个答案:

答案 0 :(得分:1)

如果搜索名字并且未编入索引,则服务器将读取表中的每一行并将其与where子句进行比较。由于检索结果所花费的时间取决于行的位置,因此该查询可能会在时间上发生巨大变化。例如,名字' a'将很快找到和名字' z'需要更长的时间。基本上,您正在对数据库进行线性/顺序访问。

如果名字上有索引,MySQL会在列上构建一个树。树木在搜索时非常有效。基本上找到价值观' a'和' z'因为您正在进行二进制搜索,所以应该执行相同数量的操作。请注意,我说的是操作。

现在有一种方式可以保证查询将始终在相同的时间内执行。请记住,当数据库是内存密集型时,大多数人忽略了数据库真正绑定到磁盘io的事实。这些因素使得你很可能无法保证执行时间总是可以预测和不变的。但是,您可以确保所使用的操作数保持优化。

当索引加速读取时,另外一件事就是减慢写入速度。索引是一把双刃剑。只索引你真正需要的东西。