MySQL和NoSQL:幫助我選擇正確的有一個很大的數據庫,1,000,000,000行,稱為線程(這些線程實際上存在,我不會僅僅因為我喜歡它就讓事情變得更困難)。線程中只有幾個東西,以加快速度:(int id、String散列、int應答計數、int dateline(時間戳)、int forumid、String title)查詢:select * from thread where forumid = 100 and replycount > 1 order by dateline desc limit 10000, 100因為有1G的記錄,這是一個很慢的查詢。所以我想,讓我們把這1G的記錄分成幾張表格,就像我擁有的一樣多的論壇(類別)!差不多完美了。有很多表,我的搜索記錄較少,而且速度更快。查詢現在變成:select * from thread_{forum_id} where replycount > 1 order by dateline desc limit 10000, 100這真的更快,99%的論壇(類別),因為其中大多數只有少數幾個主題(100k-100萬)。然而,由于有一些記錄大約有1000萬條,所以有些查詢仍然要慢下來(0.1/2秒),對于我的應用程序來說太慢了!我已經在用索引了!).我不知道如何使用MySQL來改進它。有辦法嗎?對于這個項目,我將使用10臺服務器(12 GB內存,4x7200 rpm硬盤上的軟件RAID 10,四核)這樣做的目的是簡單地將數據庫拆分到服務器之間,但是由于上面解釋的問題,這個問題仍然是不應該存在的。如果我在這10臺服務器上安裝了Cassandra(假設我找到了使其正常工作的時間),那么是否應該提高性能呢?我該怎么辦?在多臺機器上繼續使用帶有分布式數據庫的MySQL,還是構建Cassandra集群?我被要求發布什么是索引,如下所示:mysql> show index in thread;PRIMARY id
forumid
dateline
replycount選擇“解釋”: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 | +----+-------------+--------+------+---------------+---------+---------+-------------+--------+-----------------------------+
MySQL和NoSQL:幫助我選擇正確的
MM們
2019-06-20 17:20:39