【发布时间】:2010-08-02 00:43:04
【问题描述】:
现在我是一名非常高级的 PHP 开发人员,并且在小型 MySQL 集方面拥有丰富的知识,但是我现在正在为我最近加入的一家初创公司构建一个大型基础架构,他们的服务器每次推送大约 100 万行数据一天使用他们强大的服务器能力和以前的架构。
我需要知道在数据库大小为 394.4 GB 的大型数据集(目前位于 8490 万行)中搜索的最佳方法是什么。它是使用 Amazon RDS 托管的,因此它没有任何停机时间或运行缓慢,只是我想知道在内部访问大型数据集的最佳方式是什么。
例如,如果我想搜索一个包含 8400 万行的数据库,我需要 6 分钟。现在,如果我直接请求特定的 ID 或标题,它会立即为它服务。那么我将如何搜索大型数据集。
提醒您,通过传入一个变量通过数据库查找信息很快,但在搜索时执行速度非常慢。
MySQL 查询示例:
SELECT u.*, COUNT(*) AS user_count, f.* FROM users u LEFT JOIN friends f ON u.user_id=(f.friend_from||f.friend_to) WHERE u.user_name LIKE ('%james%smith%') GROUP BY u.signed_up LIMIT 0, 100
84m 行下的查询非常慢。特别是 47.41 秒来独立执行这个查询,有什么想法吗?
我所需要的只是对挑战进行排序,然后我就可以随心所欲了。此外,我知道 MySQL 对于大型数据集以及 Oracle 或 MSSQL 之类的东西不是很好,但是我被告知目前要在 MySQL 而不是其他数据库解决方案上重建它。
【问题讨论】:
-
也许你没有读到这个:blog.facebook.com/blog.php?post=7899307130 它说
facebook使用 MySQL。所以它一定不是你说的最糟糕的选择
标签: mysql database large-data-volumes