如何优化 linux MySQL 服务器以更快地查询具有多行(最多 10 亿行)的表。
服务器仅用于开发,因此安全性、可用性或恢复不是问题。
这是一个例子:
ALTER TABLE link ADD UNIQUE KEY url_index(url(255))
- 持续时间>6h
- 链接数(~ 2000 万)
- CPU 使用率低 (~19%)
- 高 IO(iotop mysql 主要返回 600 KB/s 读取和 500 KB/s 写入,99% IO 一些峰值达到 2-3 MB/s)
链接表:
CREATE TABLE `links` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`url` varchar(2000) NOT NULL,
`domain` varchar(255) DEFAULT NULL
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=27765646 DEFAULT CHARSET=utf8;
我有一个专用的 linux 服务器(ubuntu 12.10)
- 6 GB 内存
- 1 TB 硬盘(非 SSD)
my.cnf (http://pastebin.com/vx6BNqrE)
我可以在软件方面优化什么(查询/表设计和 my.cnf 或其他服务器配置)以及在 RAM 以外的硬件方面应该首先升级什么(不幸的是 RAM 不可升级,因为只有 3 个 RAM 插槽可用)。
更新