數(shù)據(jù)庫優(yōu)化解決海量數(shù)據(jù)

本篇內(nèi)容主要講解“數(shù)據(jù)庫優(yōu)化解決海量數(shù)據(jù)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“數(shù)據(jù)庫優(yōu)化解決海量數(shù)據(jù)”吧!

10年的市中網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整市中建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“市中網(wǎng)站設計”,“市中網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

(一)分離活躍數(shù)據(jù)

       有些數(shù)據(jù)總數(shù)據(jù)量很大,但是活躍數(shù)據(jù)并不多。比如用戶,注冊用戶很多,但是活躍用戶數(shù)很少。這時可以將活躍數(shù)據(jù)與不活躍數(shù)據(jù)分離。活躍數(shù)據(jù)單獨存放在活躍表中,并通過離線任務,定時地將活躍表中的變?yōu)椴换钴S的數(shù)據(jù)遷移出去。查詢時先從活躍表中查詢數(shù)據(jù),如果查詢不到,再從非活躍表中查詢數(shù)據(jù)。這樣可以提高查找效率。

(二)讀寫分離

        讀寫分離的本質(zhì)是對數(shù)據(jù)庫進行集群,將對數(shù)據(jù)庫的操作從單臺數(shù)據(jù)庫服務器分散到多個數(shù)據(jù)庫服務器去處理,從而降低單臺服務器的壓力??紤]到集群中所有服務器存儲的數(shù)據(jù)必須保持一致,一般采用一主多從的設計架構,主服務器用于數(shù)據(jù)寫入,多個從服務器用于數(shù)據(jù)讀取,從而在高并發(fā)請求的場景下分散了讀壓力。主服務器向從服務器同步數(shù)據(jù)時,如果從服務器數(shù)量較多,可以讓主服務器先向其中一部分從服務器同步數(shù)據(jù),第一部分從服務器接收到數(shù)據(jù)后再向另外一部分同步。

(三)批量讀取和延遲修改

        批量讀取和延遲修改是通過減少操作的次數(shù)來提高效率。單個上游請求中的多條數(shù)據(jù)查詢可以合并為一條批量查詢,或者對于一段時間內(nèi)的多個請求的數(shù)據(jù)查詢合并為一次數(shù)據(jù)查詢。 延遲修改主要針對高并發(fā)且頻繁修改的數(shù)據(jù),可以現(xiàn)將修改的結果暫時保存在緩存中,然后定時將緩存中的數(shù)據(jù)保存到數(shù)據(jù)庫中。程序在讀取數(shù)據(jù)時可以同時讀取數(shù)據(jù)庫和緩存中的數(shù)據(jù)。但這會帶來短暫的數(shù)據(jù)不一致的問題,而且當緩存發(fā)生故障時,未寫入數(shù)據(jù)庫中的數(shù)據(jù)可能會丟失。

(四)分布式數(shù)據(jù)庫

        分布式數(shù)據(jù)庫是將多個表存放到不同的數(shù)據(jù)庫中,然后再存放到不同的服務器中。這樣在處理請求時,如果需要調(diào)用多個表,可以讓多臺服務器同時處理,從而提高處理速度。分布式數(shù)據(jù)庫是用來解決單個請求本身就非常復雜的問題,將單個復雜的請求分配到多個服務器處理。使用分布式后的每個節(jié)點還可以同時使用讀寫分離,組成多個節(jié)點群。還可以將不同業(yè)務的數(shù)據(jù)表保存到不同的節(jié)點,讓不同的業(yè)務調(diào)用不同的數(shù)據(jù)庫。使用分布式數(shù)據(jù)庫會面臨數(shù)據(jù)一致性的問題和多表查詢的問題。

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

      數(shù)據(jù)庫優(yōu)化主要包括:表結構優(yōu)化、索引優(yōu)化、SQL語句優(yōu)化、分區(qū)分表、使用存儲過程。

      表結構優(yōu)化:大表拆分為多個子表,查詢相關度高的字段存放在一個表中,冗余部分業(yè)務數(shù)據(jù);

      索引優(yōu)化:索引的本質(zhì)就是在數(shù)據(jù)發(fā)生變化時,按照預先指定的字段排列順序,保存到一個類似于表的結構中,按索引字段查詢時,即可通過該結構獲取數(shù)據(jù)記錄的指針并從數(shù)據(jù)表中獲取記錄。使用索引進行掃描,其效率高于全表掃描。但是要注意索引使用的是否合理,索引是否帶來明顯的效率提升,多個索引共存時,一次查詢到底使用了哪個索引。索引太多會不會影響存儲引擎優(yōu)化查詢的效率,索引太多會不會影響數(shù)據(jù)的更新效率,使用聚簇索引時,索引中包含的數(shù)據(jù)量是否會過大,導致緩存放不下而要訪問磁盤。

      SQL語句優(yōu)化:包括語法層面和業(yè)務邏輯的優(yōu)化,配合索引和緩存。不要返回所有列的數(shù)據(jù),一次批量查詢也不要返回太多條記錄,因為查詢結果是可以存放在數(shù)據(jù)庫服務器的緩存中的。然后就是需要做好監(jiān)控和慢查詢?nèi)罩荆皶r發(fā)現(xiàn)慢查詢并分析原因。同一條查詢語句對于不同的查詢條件,其執(zhí)行結果可能也不一樣。

      分區(qū):將一張表中的數(shù)據(jù)按照一定的規(guī)則分到不同的區(qū)來保存。比如按時間劃分。這樣在查詢時,如果數(shù)據(jù)的范圍在同一個區(qū)內(nèi),就可以只對一個區(qū)的數(shù)據(jù)進行操作。

      分表:如果一張表中的數(shù)據(jù)可以分為多種不同的類型,并且對不同類型的數(shù)據(jù)同時操作的場景不多時,可以考慮把不同類型的數(shù)據(jù)保存在不同的表中。或者可以將一個大表拆分成多個小表,從而減小鎖的粒度。比如某個表的訪問頻率很高,某個寫操作只更改個別列的數(shù)據(jù),而其他未被修改的列可能被別的查詢請求訪問,這時就可以通過分表來提高查詢效率。分表的問題在于如何查找到對應的表,以及查詢完整數(shù)據(jù)的時候就需要多表操作了。

      使用存儲過程:存儲過程只需要編譯一次且可以進行一些復雜的操作。

      PS原因分析:沒有合理使用索引,索引過多導致存儲引擎優(yōu)化查詢效率低下、數(shù)據(jù)更新效率低下,查詢太多字段,返回太多記錄,不合理的查詢語句,聯(lián)表查詢,表結構過于龐大,鎖粒度太粗,高并發(fā)查詢,緩沖擊穿、穿透、雪崩。

(六)NOSQL

      使用關系型數(shù)據(jù)庫時,通常需要先定義表的結構,有哪些字段,每個字段的類型,且一個字段只能保存單一的信息,不能保存多層類容。NoSql突破了關系型數(shù)據(jù)庫的束縛,實現(xiàn)了數(shù)據(jù)存儲的非結構化,而且通過多個塊存儲數(shù)據(jù),提高了數(shù)據(jù)操作的性能。

(七)Hadoop

       在大數(shù)據(jù)場景下,對數(shù)據(jù)的存儲和處理提供了相應的解決方案。其底層結構為分布式加集群,將同一個數(shù)據(jù)表中的數(shù)據(jù)分成多塊保存在不同的節(jié)點(分布式),且每一塊數(shù)據(jù)都有多個節(jié)點保存(集群)。任意節(jié)點都沒有保存一個完整的數(shù)據(jù)表,但卻保存了多個數(shù)據(jù)表的數(shù)據(jù)。在處理一次查詢請求時,對每一塊的數(shù)據(jù)找到對應的節(jié)點進行處理,然后將多個節(jié)點的處理結果進行聚合處理。

(八)緩存和頁面靜態(tài)化

        減少調(diào)用后端服務以及訪問數(shù)據(jù)庫的次數(shù)。本地緩存主要使用map,分布式緩存有redis、memcache、Ehcache。主要考慮問題是緩存何時設置、何時更新、何時刪除。如果應用程序需要同時操作緩存和DB,那么緩存和DB的操作順序如何。

到此,相信大家對“數(shù)據(jù)庫優(yōu)化解決海量數(shù)據(jù)”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

網(wǎng)站名稱:數(shù)據(jù)庫優(yōu)化解決海量數(shù)據(jù)
網(wǎng)站網(wǎng)址:http://muchs.cn/article26/iheecg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號動態(tài)網(wǎng)站、品牌網(wǎng)站建設、微信小程序、網(wǎng)站維護定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設