多くの行(最大1ビリオン)を持つテーブルのクエリを高速化するためにLinuxMySQLサーバーを最適化する方法。
サーバーは開発でのみ使用されるため、セキュリティ、可用性、またはリカバリは問題になりません。
ここに例があります:
ALTER TABLE link ADD UNIQUE KEY url_index(url(255))
- 期間>6時間
- リンク数(〜20 mil)
- CPU使用率が低い(〜19%)
- 高IO(iotopmysqlは主に600KB/sの読み取りと500KB/ 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)を持っています
- 6GBのRAM
- 1 TB HDD(非SSD)
my.cnf(http://pastebin.com/vx6BNqrE)
ソフトウェア(クエリ/テーブルデザインとmy.cnfまたは他のサーバー構成)の観点から最適化できるものと、RAM以外のハードウェアの観点から最初にアップグレードする必要があるもの(残念ながら、RAMは3つのRAMスロットしか使用できないため、RAMはアップグレードできません) )。
updatead