MySQL ve NoSQL: Beni doğru bir seçim için yardım

0 Cevap php

Iplikleri olarak adlandırılan büyük bir veritabanı, 1,000,000,000 satırlar, (bu iplikler, aslında ben sert şeyler yapma değilim, çünkü ben zevk içinde mevcut) bulunmaktadır. Konular şeyler daha hızlı yapmak için de sadece bir kaç şeyler vardır: (int id, string hash, int replycount, int dateline (zaman damgası), int forumid, string başlık)

Sorgu:

select * from thread where forumid = 100 and replycount > 1 order by dateline desc limit 10000, 100

Kayıtların 1G olduğunu beri oldukça yavaş bir sorgu. Yani ben birçok forumlarda (kategori) gibi birçok tablolardaki kayıtları bu 1G bölelim, düşündüm! Yani neredeyse mükemmel. Birçok tablo yiyerek etrafında aramak için daha az kayıt var ve gerçekten hızlı. Sorgu şimdi olur:

select * from thread_{forum_id} where replycount > 1 order by dateline desc limit 10000, 100

Bunların çoğu konularda (100k-1M) sadece birkaç beri bu forumları (kategori)% 99 ile gerçekten hızlıdır. Bazıları hakkında 10M kayıtları ile vardır Ancak, bazı sorgu yavaş hala (benim app için oldukça fazla, 0.1/.2 saniye!, I'm already using indexes! ).

MySQL kullanarak bu geliştirmek için nasıl bilmiyorum. Bir yolu var mı?

Bu proje için ben 10 Sunucuları kullanacağız (yazılım baskında 10 12GB ram, 4x7200rpm sabit disk, dört çekirdekli)

Fikir basitçe sunucuları arasında veritabanlarını bölünmüş oldu, ama sorun yukarıda açıklandığı ile enought hala değildir.

Ben bu 10 sunucularda cassandra yüklerseniz bir performans artışı için varsayalım edilmelidir (varsayılarak ben zaman o gerekiyordu gibi çalışır hale getirmek için bulabilirsiniz)?

What should I do? Keep working with MySQL with distributed database on multiple machines or build a cassandra cluster?

Ben endeksleri ne yayınlamak istendi, burada bunlar:

mysql> show index in thread;
PRIMARY id
forumid
dateline
replycount

Seçiniz açıklar:

mysql> explain SELECT * FROM thread WHERE forumid = 655 AND visible = 1 AND open <> 10 ORDER BY dateline ASC LIMIT 268000, 250;
+----+-------------+--------+------+---------------+---------+---------+-------------+--------+-----------------------------+
| id | select_type | table  | type | possible_keys | key     | key_len | ref         | rows   | Extra                       |
+----+-------------+--------+------+---------------+---------+---------+-------------+--------+-----------------------------+
|  1 | SIMPLE      | thread | ref  | forumid       | forumid | 4       | const,const | 221575 | Using where; Using filesort | 
+----+-------------+--------+------+---------------+---------+---------+-------------+--------+-----------------------------+

0 Cevap