自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

5步優(yōu)化MongoDB以及其它數(shù)據(jù)庫

數(shù)據(jù)庫 MongoDB
Jared Rosoff 在 Scale Out Camp 發(fā)表了一篇簡潔、有效、有趣和令人信服的《8 分鐘 MongoDB 教程》,描述了如何進(jìn)行 MongoDB 優(yōu)化。文中的方法不僅限于 MongoDB,還可應(yīng)用到絕大多數(shù)數(shù)據(jù)庫,比如查詢優(yōu)化、找出你的熱數(shù)據(jù)、調(diào)整文件系統(tǒng)、選擇正確的磁盤設(shè)備、分片。

Jared Rosoff 在 Scale Out Camp 發(fā)表了一篇簡潔、有效、有趣和令人信服的《8 分鐘 MongoDB 教程》描述了如何進(jìn)行 MongoDB 優(yōu)化。

文中的方法不僅限于 MongoDB,還可應(yīng)用到絕大多數(shù)數(shù)據(jù)庫,比如查詢優(yōu)化、找出你的熱數(shù)據(jù)、調(diào)整文件系統(tǒng)、選擇正確的磁盤設(shè)備、分片。下面分別對 5 種策略進(jìn)行說明:

查詢優(yōu)化:用 B-tree 搜索的速度顯然比全表掃描來的快,所以你需要優(yōu)化你的查詢語句。用 explain來分析你的查詢語句,如果返回的結(jié)果現(xiàn)實這個查詢用到了 cursor 那么它會是一個全表掃描,也就是說它會非常慢。分析有多少條記錄會滿足查詢條件,以及查詢會執(zhí)行多長時間。改進(jìn)的方法就是為其增加索引。不管你是有 1 臺還是有 100 臺服務(wù)器。

找出你的熱數(shù)據(jù)尺寸:在數(shù)據(jù)庫前面使用 Memcached 其實挺可笑的,因為現(xiàn)在內(nèi)存很便宜,你可以使用大量的內(nèi)存來緩存數(shù)據(jù)庫內(nèi)容,MongoDB 就是這樣干的。熱數(shù)據(jù) = 活躍記錄 + 使用過的索引。在內(nèi)存中命中數(shù)據(jù)是非??斓模鴱拇疟P獲取數(shù)據(jù)就非常慢。假設(shè)你有上十億的用戶,但只有十萬用戶當(dāng)前是活躍的,那么你的熱數(shù)據(jù)尺寸就是十萬條。你需要規(guī)劃足夠的內(nèi)存來存放那十萬條熱數(shù)據(jù),保證他們能夠從內(nèi)存而不是磁盤里讀取,別忘了索引也是需要占用內(nèi)存的。

[[190185]] 

調(diào)整文件系統(tǒng):性能問題往往根源是在文件系統(tǒng)。比如 EXT3 已經(jīng)過時了,請使用 EXT4、XFS 和其它高性能的文件系統(tǒng)。對于數(shù)據(jù)庫來說并不需要每次訪問都去更新文件,所以關(guān)掉文件的訪問時間跟蹤功能,不然會有很多不必要的磁盤寫操作。在 EXT3 文件系統(tǒng)預(yù)分配一個 2GB 大小的文件是非常耗時的,因為它必須得在分配時完整初始化整個文件。

選擇正確的磁盤設(shè)備:尋道時間是需要關(guān)注的問題,因為大多數(shù)時候磁盤的 IO 操作是隨機的。尋道時間取決于機械臂在磁盤上來回移動的速度,磁盤的平均尋道操作能力是每秒鐘能完成 200 次。高速磁盤之所以讀取數(shù)據(jù)更快,是因為他們有更高的帶寬容量,除此之外他們的尋道時間并沒有區(qū)別。使用單個磁盤時,你可以獲得每秒 200 次尋道;而使用 RAID 0(跨多個磁盤),3 塊磁盤可以讓你獲得每秒 600 次的尋道速度;那么使用 RAID 10(鏡像 + 跨越),6 塊磁盤甚至能讓你獲得每秒 1200 次尋道。所以要考慮用 RAID 來進(jìn)行優(yōu)化。如今的 SSD 存儲就更夸張了,一次尋道只要 0.1 毫秒,是機械磁盤的 50 倍,更適用于隨機的讀取操作。

分片:如果你的程序性能很差,索引又建的不正確,磁盤設(shè)備的速度也很慢,那么單點的性能也就非常差了。改善這種情況的方法就是用分片來做橫向擴展,分片可以讓你把系統(tǒng)負(fù)責(zé)分散到由更多機器組成的高可用的 replica sets 集群。數(shù)據(jù)將會按一定范圍被切分成很多的區(qū)塊,然后橫向擴展到上百臺服務(wù)器,上千次的寫操作在被拆分后每臺服務(wù)器只需要處理十來次操作。分片讓橫向擴展變得容易。

 

責(zé)任編輯:杜寧 來源: 數(shù)據(jù)派
相關(guān)推薦

2011-05-19 13:25:15

MySQL數(shù)據(jù)庫優(yōu)化

2023-08-01 08:47:54

索引數(shù)據(jù)庫MongoDB

2019-06-26 07:25:47

NoSQL數(shù)據(jù)庫開發(fā)

2018-04-19 08:29:26

閃存存儲數(shù)據(jù)庫

2020-02-02 19:53:57

數(shù)據(jù)庫數(shù)據(jù)庫優(yōu)化SQL優(yōu)化

2017-06-16 21:36:14

2011-09-21 14:13:25

MongoDB

2016-08-30 14:15:27

數(shù)據(jù)庫DBASQL

2011-03-03 17:56:52

MySQL數(shù)據(jù)庫優(yōu)化

2011-03-08 08:49:55

MySQL優(yōu)化單機

2017-11-08 09:03:55

MongoDB數(shù)據(jù)庫步驟

2018-07-27 15:50:55

LinuxUbuntu版本

2023-09-06 10:44:09

Nitrux 3.0工具

2010-04-23 09:32:39

Oracle數(shù)據(jù)庫實例

2013-09-17 10:32:08

Android性能優(yōu)化數(shù)據(jù)庫

2020-07-17 08:20:27

數(shù)據(jù)庫開源技術(shù)

2014-07-18 09:33:53

數(shù)據(jù)庫數(shù)據(jù)庫優(yōu)化

2013-01-04 10:00:12

MySQL數(shù)據(jù)庫數(shù)據(jù)庫查詢優(yōu)化

2010-08-26 14:39:54

Infobright數(shù)

2011-03-31 09:19:54

數(shù)據(jù)庫優(yōu)化
點贊
收藏

51CTO技術(shù)棧公眾號