【发布时间】:2013-08-30 15:28:17
【问题描述】:
我有一个巨大的人物数据库,并在上面用名字进行普通搜索。
SELECT * FROM tbl_person WHERE full_name LIKE 'Sparow%Jack%';
SELECT * FROM tbl_person WHERE full_name LIKE 'Sparow%';
我很少在这个表中插入新数据。
我想将常见的姓氏查询存储在硬盘上,查询已经存储在内存中,但每次服务器重新启动时我都会丢失它。
我的表中有 17 亿行,每行(带索引)占用 1k,是的,它是一个 1.7Tb 的数据库。
这是我想在磁盘上存储公共选择的主要原因。
Variable_name,Value
query_alloc_block_size,8192
query_cache_limit,1048576
query_cache_min_res_unit,1024
query_cache_size,4294966272
query_cache_type,ON
query_cache_wlock_invalidate,OFF
query_prealloc_size,8192
编辑:
SELECT * FROM tbl_person WHERE full_name LIKE 'Savard%';
第一次执行需要 1000 秒,之后需要 2 秒。 如果我重新启动系统并再次执行,查询又需要 1000 秒。
我只是想避免 mysql 再花 1000 秒运行我在重启之前已经执行过的相同查询。
【问题讨论】:
-
抱歉,有什么问题?
-
Mysql 怎么把查询缓存到磁盘上?类似于 memcache 但在硬盘上的东西。能够在系统重新启动后检索它。
-
用mysql真的不可能在硬盘上缓存查询吗?
-
应用程序的编程语言是什么?
-
我目前使用 WAMP 服务器,所以它是一个 PHP 应用程序,在 windows server 2008 64 位机器上带有 apache 服务器。
标签: mysql performance caching memcached query-tuning