我正在构建一个使用django,Sphinx和MySQL的系统,它很快变得非常庞大。该数据库目前有大约2000行,我编写了一个程序,将在几天内用另外40,000行填充它。由于数据库现在正在运行,而且因为我从来没有一个包含这么多信息的数据库,所以我担心一些事情:
添加所有这些行会严重降低我的django应用程序的效率吗?我是否需要回过头来优化我的所有数据库调用,以便他们更聪明地做事情?或者这会使数据库一直变慢到我根本无法做任何事情的程度吗?
如果你嘲笑我的40k行,那么,我的下一个问题是,我应该关注什么时候?我很快就会增加几十万,所以我担心,我担心。
狮身人面像怎么会感受到这一切?当它意识到它必须索引所有这些数据时它会变得怪异吗?还是会没事的?这是正常的吗?如果是的话,我应该在什么时候担心Sphinx的数据太多了?
感谢您的任何想法。
答案 0 :(得分:1)
对于普通查询,2000行是没有的 - 即使没有索引,它也会非常快,因为整个表可以缓存在内存中。在大多数情况下,100000行也应该可以正常工作,但是如果你没有适当的索引或者你的查询没有使用可用的索引,那么你现在就会注意到它 - 如果它们不使用则需要几秒钟的查询可能需要几分钟索引正确。但是修复问题不需要很长时间 - 在慢速查询上运行EXPLAIN,看看它为什么慢,并找出你需要的索引。
当您获得数百万行或数千万行时,您将不得不更仔细地考虑数据库设计和索引策略。如果你做得对的话,表中可能有数亿行。