亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL和NoSQL:幫助我選擇正確的

MySQL和NoSQL:幫助我選擇正確的

MM們 2019-06-20 17:20:39
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 | +----+-------------+--------+------+---------------+---------+---------+-------------+--------+-----------------------------+
查看完整描述

3 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

有一部分問題與NoSQL或MySQL選項有關。事實上,這是隱藏在這里的一件基本事情。SQL語言對人來說很容易寫,對計算機來說也很難讀。在大容量數據庫中,我建議避免SQL后端,因為這需要額外的步驟命令解析。我已經做了大量的基準測試,在某些情況下,SQL解析器是最慢的。你對此無能為力。好的,您可以使用預解析語句并訪問它們。

順便說一句,它并不廣為人知,但MySQL是從NoSQL數據庫中發展出來的。MySQLDavid和Monty的作者工作的公司是數據倉庫公司,他們常常不得不為不尋常的任務編寫自定義解決方案。這導致了大量用于手工編寫數據庫函數的自制C庫,而Oracle和其他庫的性能很差。SQL于1996年被添加到這個有近20年歷史的動物園中,以求取樂。你知道之后發生了什么。

實際上,使用MySQL可以避免SQL開銷。但通常情況下,SQL解析不是最慢的部分,而是很好的了解。要測試解析器開銷,只需為“SELECT 1”進行基準測試;)。


查看完整回答
反對 回復 2019-06-20
  • 3 回答
  • 0 關注
  • 843 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號