私は、製品とレビューの2つのテーブルを持つ1つのサーバで簡単なmysqlデータベースを実行しています。製品テーブルには約1,000万エントリがあり、レビューテーブルには約3,000万エントリがあります。エントリが30mlのテーブルは遅いです。 MySQLを最適化するか、mongodbに切り替えますか?
Db全体は約30Gbです。私はそれが遅くなっているように感じ、私はそれについて何をすべきかと思います。私はインデックスを作成しましたが、それは助けになりませんでした。たとえば、商品表にはカテゴリフィールドがあり、単純なときはselect * from products where category=2
- それは遅いです。
mongodbに切り替えるとこのような状況になるのですか、それともMysqlを何とか最適化すれば解決できますか?この場合、シャーディングやテーブルのサイズはそれほど大きくなく、他の方法を最適化することは可能ですか?あなたのkey_buffer_size
はそう、小さすぎ方法であるかのように
テーブルとmy.cnfの
CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL auto_increment,
`product_title` varchar(1000) NOT NULL,
`product_id` varchar(100) NOT NULL,
`title` varchar(1000) NOT NULL,
`image` varchar(1000) NOT NULL,
`url` varchar(1000) NOT NULL,
`price` varchar(100) NOT NULL,
`reviews` int(11) NOT NULL,
`stars` float NOT NULL,
`BrowseNodeID` int(11) NOT NULL,
`status` varchar(100) NOT NULL,
`started_at` int(15) NOT NULL,
PRIMARY KEY (`id`),
KEY `id_index` (`BrowseNodeID`),
KEY `status_index` (`status`),
KEY `started_index` (`started_at`),
KEY `id_ind` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13743335 ;
CREATE TABLE IF NOT EXISTS `reviews` (
`id` int(11) NOT NULL auto_increment,
`product_id` varchar(100) NOT NULL,
`product_title` varchar(1000) NOT NULL,
`review_title` varchar(1000) NOT NULL,
`content` varchar(5000) NOT NULL,
`author` varchar(255) NOT NULL,
`author_profile` varchar(1000) NOT NULL,
`stars` float NOT NULL,
`owner` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `product_id` (`product_id`),
KEY `id_index` (`product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=48129737 ;
あなたのmy.cnfに基づいて、my.cnfの
set-variable = query_cache_size=1512M
set-variable = thread_cache_size=8
thread_concurrency = 8
skip-innodb
low-priority-updates
delay-key-write=ALL
key_buffer_size = 100M
max_allowed_packet = 1M
#table_open_cache = 4048
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 50M
set-variable = table_cache=256
set-variable = query_cache_limit=1024M
set-variable = query_cache_size=1024M
my.cnfとテーブル定義を指定できますか? –
「遅い」とは何ですか?関係するテーブル、インデックス、クエリ/クエリには詳細はありませんが、正当化をmongodbに切り替えるように思えます。 –
カテゴリの列の選択度はどのくらいですか?おそらくインデックスが選択*を助けることはありません.... –