特定于完全静态数据库的MySQL优化技巧?

时间:2011-06-03 05:34:57

标签: mysql database performance optimization myisam

我有一个大小约为20 GB的数据库。我想知道是否有任何特定于使用静态数据库的优化提示。当我的意思是静态时,我并不是指不经常改变,我的意思是不会改变。对于通常您远离易失性数据库的值或其他事物,是否存在任何极端设置,这可以使真正的静态数据库受益;特别是考虑到只有SELECT语句而且绝对没有INSERT语句?我正在使用MyISAM表。

- roschler

1 个答案:

答案 0 :(得分:1)

由于一切都是MyISAM,您需要关注两件大事:

KEY CACHE

用于缓存的主要机制是密钥缓存。它只缓存来自.MYI文件的索引页面。要调整密钥缓存大小,请运行以下查询:

SELECT CONCAT(ROUND(KBS/POWER(1024,IF(PowerOfTwo<0,0,IF(PowerOfTwo>3,0,PowerOfTwo)))+0.4999),
SUBSTR(' KMG',IF(PowerOfTwo<0,0,IF(PowerOfTwo>3,0,PowerOfTwo))+1,1)) recommended_key_buffer_size
FROM (SELECT LEAST(POWER(2,32),KBS1) KBS FROM
(SELECT SUM(index_length) KBS1 FROM information_schema.tables
WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql')) AA) A,
(SELECT 2 PowerOfTwo) B;

这将给出您当前数据集(the query will cap the recommendation at 4G (4096M))的MyISAM密钥缓存(key_buffer_size)的推荐设置。对于32位操作系统,4GB是限制。对于64位,8GB。

FULLTEXT索引

您应该更改禁用词列表。您可能想要更改停用词,因为MySQL不会将this list of 643 words编入索引。尝试创建自己的禁用词列表并更改最小字长。

步骤1)创建自己的停用词列表。你可以添加'a','an'和'the'。

echo "a" > /var/lib/mysql/custom_stopwords.txt<BR>
echo "an" >> /var/lib/mysql/custom_stopwords.txt<BR>
echo "the" >> /var/lib/mysql/custom_stopwords.txt

步骤2)将这些选项添加到/etc/my.cnf

ft_min_word_len=2
ft_stopword_file=/var/lib/mysql/custom_stopwords.txt

步骤3)service mysql restart

步骤4)创建新的FULLTEXT索引。在重新启动mysql之前,任何现有的FULLTEXT索引都应该重新编制索引。

尝试这些想法!!!