日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
深入剖析數(shù)據(jù)庫性能瓶頸,提升系統(tǒng)穩(wěn)定性和效率(數(shù)據(jù)庫性能瓶頸分析)

隨著信息化程度的不斷加深,數(shù)據(jù)已經(jīng)成為企業(yè)最有價值的資產(chǎn)之一。而數(shù)據(jù)庫作為企業(yè)內(nèi)部數(shù)據(jù)管理的核心,其性能直接影響系統(tǒng)的穩(wěn)定性和效率。因此,在實際應用中,深入剖析數(shù)據(jù)庫性能瓶頸并做出相應的優(yōu)化,已經(jīng)成為數(shù)據(jù)管理的關鍵要素之一。

對于數(shù)據(jù)庫的性能瓶頸,很多人認為只是硬件上的問題。然而,實際上,還有很多其他方面的因素也需要考慮。下面,我們將從多個方面來深入剖析數(shù)據(jù)庫性能瓶頸,并提供一些解決方法,以提升系統(tǒng)穩(wěn)定性和效率。

1. 合理的數(shù)據(jù)庫設計

數(shù)據(jù)庫的設計是影響其性能的一個基本方面。如果數(shù)據(jù)庫的結構設計不合理,將會給系統(tǒng)帶來很多負擔,從而導致系統(tǒng)因為過多的查詢而陷入癱瘓狀態(tài)。因此,在設計數(shù)據(jù)庫時,需要注意以下幾點:

(1)盡量避免使用過多的冗余數(shù)據(jù)。如果一個數(shù)據(jù)已經(jīng)在數(shù)據(jù)庫中出現(xiàn)過一次,那么就不應該再次出現(xiàn)。

(2)表之間的關系應該盡可能的簡單。在設計數(shù)據(jù)庫時,應該選擇合適的外鍵約束。

(3)數(shù)據(jù)庫的索引數(shù)量應該盡可能的減少。索引過多會導致數(shù)據(jù)庫性能低下,因此,在設計數(shù)據(jù)庫時,應該謹慎選擇哪些字段需要建立索引。

2. 合理的硬件設施

硬件設施也是影響數(shù)據(jù)庫性能的關鍵。為了確保數(shù)據(jù)庫的有效性和可靠性,需要考慮以下幾點:

(1)為數(shù)據(jù)庫提供足夠的內(nèi)存。數(shù)據(jù)庫的性能與內(nèi)存的大小息息相關。因此,在使用大型應用程序時,應增加內(nèi)存容量以提高性能。

(2)為數(shù)據(jù)庫提供高速的磁盤。磁盤速度越快,數(shù)據(jù)庫的讀寫速度就越快。因此,使用高速固態(tài)硬盤可以有效提高數(shù)據(jù)庫的性能。

(3)為數(shù)據(jù)庫提供足夠的CPU資源。隨著業(yè)務的增長,數(shù)據(jù)庫的工作負載也會增加。因此,在選擇服務器時要考慮其CPU的性能。

3. 合理的數(shù)據(jù)存儲策略

除了以上兩個方面,我們還需要關注數(shù)據(jù)存儲策略。數(shù)據(jù)存儲策略旨在確保數(shù)據(jù)庫的安全性和有效性。

(1)備份策略。定期備份數(shù)據(jù)庫可以確保即使在發(fā)生故障的情況下,也能夠恢復數(shù)據(jù)。同時,還需要注意備份數(shù)據(jù)的存儲位置。更好將備份數(shù)據(jù)存儲在不同于原始數(shù)據(jù)的位置,以防意外遺失。

(2)數(shù)據(jù)歸檔策略。大量早期或不再使用的數(shù)據(jù)可以歸檔到其他存儲設備中,如磁帶或另一個服務器中。通過歸檔數(shù)據(jù),可以釋放磁盤空間并提高數(shù)據(jù)庫性能。

(3)合理的數(shù)據(jù)清理策略。懶散或錯誤的數(shù)據(jù)清理會導致數(shù)據(jù)庫變得混亂。因此,需要制定相應的數(shù)據(jù)清理策略來維護數(shù)據(jù)庫的衛(wèi)生。

4. 優(yōu)化查詢和查詢語句

我們需要優(yōu)化查詢和查詢語句。查詢是數(shù)據(jù)庫負責的最基本的任務之一,因此,在優(yōu)化查詢時,需要考慮以下幾個方面:

(1)盡可能減少不必要的查詢。不必要的查詢會消耗大量的系統(tǒng)資源。通過減少不必要的查詢,可以省略不必要的數(shù)據(jù)庫交互,從而提高數(shù)據(jù)庫性能。

(2)盡可能減少慢查詢。慢查詢很容易造成系統(tǒng)癱瘓,因此要盡可能減少慢查詢事件的數(shù)量。

(3)減少重復查詢。重復查詢會消耗系統(tǒng)資源,如果可以避免這種情況,可以大大提高數(shù)據(jù)庫的性能。

綜上所述,合理的數(shù)據(jù)庫設計、硬件設施、數(shù)據(jù)存儲策略和查詢優(yōu)化等方面,都對數(shù)據(jù)庫的性能和穩(wěn)定性有著很大的影響。因此,做好數(shù)據(jù)庫維護和優(yōu)化是企業(yè)信息化建設的重要一環(huán),需要得到重視和關注。

成都網(wǎng)站建設公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設、網(wǎng)站制作、網(wǎng)頁設計及定制高端網(wǎng)站建設服務!

數(shù)據(jù)庫架構選型與落地,看這篇就夠了

隨著時間和業(yè)務的發(fā)展,數(shù)據(jù)庫中的數(shù)據(jù)量增長是不可控的,庫和表中的數(shù)據(jù)會越來越大,隨之帶來的是更高的

磁盤

、

IO

、

系統(tǒng)開銷

,甚至

性能

上的瓶頸,而單臺服務器的

資源終究是有限

的。

因此在面對業(yè)務擴張過程中,應用程序?qū)?shù)據(jù)庫系統(tǒng)的

健壯性

,

安全性

,

擴展性

提出了更高的要求。

以下,我從數(shù)據(jù)庫架構、選型與落地來讓大家入門。

數(shù)據(jù)庫會面臨什么樣的挑戰(zhàn)呢?

業(yè)務剛開始我們只用單機數(shù)據(jù)庫就夠了,但隨著業(yè)務增長,數(shù)據(jù)規(guī)模和用戶規(guī)模上升,這個時候數(shù)據(jù)庫會面臨IO瓶頸、存儲瓶頸、可用性、安全性問題。

為了解決上述的各種問題,數(shù)據(jù)庫衍生了出不同的架構來解決不同的場景需求。

將數(shù)據(jù)庫的寫操作和讀操作分離,主庫接收寫請求,使用多個從庫副本負責讀請求,從庫和主庫同步更新數(shù)據(jù)保持數(shù)據(jù)一致性,從庫可以水平擴展,用于面對讀請求的增加。

這個模式也就是常說的讀寫分離,針對的是小規(guī)模數(shù)據(jù),而且存在大量讀操作的場景。

因為主從的數(shù)據(jù)是相同的,一旦主庫宕機的時候,從庫可以

切換為主庫提供寫入

,所以這個架構也可以提高數(shù)據(jù)庫系統(tǒng)的

安全性

可用性

優(yōu)點:

缺點:

在數(shù)據(jù)庫遇到

IO瓶頸

過程中,如果IO集中在某一塊的業(yè)務中,這個時候可以考慮的就是垂直分庫,將熱點業(yè)務拆分出去,避免由

熱點業(yè)務

密集IO請求

影響了其他正常業(yè)務,所以垂直分庫也叫

業(yè)務分庫

優(yōu)點:

缺點:

在數(shù)據(jù)庫遇到存儲瓶頸的時候,由于數(shù)據(jù)量過大造成索引性能下降。

這個時候可以考慮將數(shù)據(jù)做水平拆分,針對數(shù)據(jù)量巨大的單張表,按照某種規(guī)則,切分到多張表里面去。

但是這些表還是在同一個庫中,所以庫級別的數(shù)據(jù)庫操作還是有IO瓶頸(單個服務器的IO有上限)。

所以水平分表主要還是針對

數(shù)據(jù)量較大

,整體業(yè)務

請求量較低

的場景。

優(yōu)點:

缺點:

四、分庫分表

在數(shù)據(jù)庫遇到存儲瓶頸和IO瓶頸的時候,數(shù)據(jù)量過大造成索引性能下降,加上同一時間需要處理大規(guī)模的業(yè)務請求,這個時候單庫的IO上限會限制處理效率。

所以需要將單張表的數(shù)據(jù)切分到多個服務器上去,每個服務器具有相應的庫與表,只是表中數(shù)據(jù)不同。

分庫分表能夠有效地緩解單機和單庫的

性能瓶頸和壓力

,突破IO、連接數(shù)、硬件資源等的瓶頸。

優(yōu)點:

缺點:

注:分庫還是分表核心關鍵是有沒有IO瓶頸

。

分片方式都有什么呢?

RANGE(范圍分片)

將業(yè)務表中的某個

關鍵字段排序

后,按照順序從0到10000一個表,10001到20230一個表。最常見的就是

按照時間切分

(月表、年表)。

比如將6個月前,甚至一年前的數(shù)據(jù)切出去放到另外的一張表,因為隨著時間流逝,這些表的數(shù)據(jù)被查詢的概率變小,銀行的交易記錄多數(shù)是采用這種方式。

優(yōu)點:

缺點:

HASH(哈希分片)

將訂單作為主表,然后將其相關的業(yè)務表作為附表,取用戶id然后

hash取模

,分配到不同的數(shù)據(jù)表或者數(shù)據(jù)庫上。

優(yōu)點:

缺點:

講到這里,我們已經(jīng)知道數(shù)據(jù)庫有哪些架構,解決的是哪些問題,因此,

我們在日常設計中需要根據(jù)數(shù)據(jù)的特點,數(shù)據(jù)的傾向性,數(shù)據(jù)的安全性等來選擇不同的架構

。

那么,我們應該如何選擇數(shù)據(jù)庫架構呢?

雖然把上面的架構全部組合在一起可以形成一個強大的高可用,高負載的數(shù)據(jù)庫系統(tǒng),但是架構選擇合適才是最重要的。

混合架構雖然能夠解決所有的場景的問題,但是也會面臨更多的挑戰(zhàn),你以為的完美架構,背后其實有著更多的坑。

1、對事務支持

分庫分表后(無論是垂直還是水平拆分),就成了分布式事務了,如果依賴數(shù)據(jù)庫本身的分布式事務管理功能去執(zhí)行事務,將付出高昂的性能代價(XA事務);如果由應用程序去協(xié)助控制,形成程序邏輯上的事務,又會造成編程方面的負擔(TCC、SAGA)。

2、多庫結果并

(group by,order by)

由于數(shù)據(jù)分布于不同的數(shù)據(jù)庫中,無法直接對其做分頁、分組、排序等操作,一般應對這種多庫結果并的查詢業(yè)務都需要采用數(shù)據(jù)清洗、同步等其他手段處理(TIDB、KUDU等)。

3、數(shù)據(jù)延遲

主從架構下的多副本機制和水平分庫后的聚合庫都會存在主數(shù)據(jù)和副本數(shù)據(jù)之間的延遲問題。

4、跨庫join

分庫分表后表之間的關聯(lián)操作將受到限制,我們無法join位于不同分庫的表(垂直),也無法join分表粒度不同的表(水平), 結果原本一次查詢就能夠完成的業(yè)務,可能需要多次查詢才能完成。

5、分片擴容

水平分片之后,一旦需要做擴容時。需要將對應的數(shù)據(jù)做一次遷移,成本代價都極高的。

6、ID生成

分庫分表后由于數(shù)據(jù)庫獨立,原有的基于數(shù)據(jù)庫自增ID將無法再使用,這個時候需要采用其他外部的ID生成方案。

一、應用層依賴類(JDBC)

這類分庫分表中間件的特點就是和應用強耦合,需要應用顯示依賴相應的jar包(以Java為例),比如知名的TDDL、當當開源的

sharding-jdbc

、蘑菇街的TSharding等。

此類中間件的基本思路就是重新實現(xiàn)JDBC的API,通過重新實現(xiàn)

DataSource

、

PrepareStatement

等操作數(shù)據(jù)庫的接口,讓應用層在

基本

不改變業(yè)務代碼的情況下透明地實現(xiàn)分庫分表的能力。

中間件給上層應用提供熟悉的JDBC API,內(nèi)部通過

sql解析

、

sql重寫

sql路由

等一系列的準備工作獲取真正可執(zhí)行的sql,然后底層再按照傳統(tǒng)的方法(比如數(shù)據(jù)庫連接池)獲取物理連接來執(zhí)行sql,最后把數(shù)據(jù)

結果合并

處理成ResultSet返回給應用層。

優(yōu)點

缺點

二、中間層代理類(Proxy)

這類分庫分表中間件的核心原理是在應用和數(shù)據(jù)庫的連接之間搭起一個

代理層

,上層應用以

標準的MySQL協(xié)議

來連接代理層,然后代理層負責

轉(zhuǎn)發(fā)請求

到底層的MySQL物理實例,這種方式對應用只有一個要求,就是只要用MySQL協(xié)議來通信即可。

所以用MySQL Navicat這種純的客戶端都可以直接連接你的分布式數(shù)據(jù)庫,自然也天然

支持所有的編程語言

。

在技術實現(xiàn)上除了和應用層依賴類中間件基本相似外,代理類的分庫分表產(chǎn)品必須實現(xiàn)標準的MySQL協(xié)議,某種意義上講數(shù)據(jù)庫代理層轉(zhuǎn)發(fā)的就是MySQL協(xié)議請求,就像Nginx轉(zhuǎn)發(fā)的是Http協(xié)議請求。

比較有代表性的產(chǎn)品有開創(chuàng)性質(zhì)的Amoeba、阿里開源的Cobar、社區(qū)發(fā)展比較好的

Mycat

(基于Cobar開發(fā))等。

優(yōu)點

缺點

JDBC方案

:無中心化架構,兼容市面上大多數(shù)關系型數(shù)據(jù)庫,適用于開發(fā)高性能的輕量級 OLTP 應用(面向前臺)。

Proxy方案

:提供靜態(tài)入口以及異構語言的支持,適用于 OLAP 應用(面向后臺)以及對分片數(shù)據(jù)庫進行管理和運維的場景。

混合方案

:在大型復雜系統(tǒng)中存在面向C端用戶的前臺應用,也有面向企業(yè)分析的后臺應用,這個時候就可以采用混合模式。

JDBC 采用無中心化架構,適用于 Java 開發(fā)的高性能的輕量級 OLTP 應用;Proxy 提供靜態(tài)入口以及異構語言的支持,適用于 OLAP 應用以及對分片數(shù)據(jù)庫進行管理和運維的場景。

ShardingSphere是一套開源的分布式數(shù)據(jù)庫中間件解決方案組成的生態(tài)圈,它由

Sharding-JDBC

Sharding-Proxy

Sharding-Sidecar

(計劃中)這3款相互獨立的產(chǎn)品組成,他們均提供標準化的數(shù)據(jù)分片、分布式事務和數(shù)據(jù)庫治理功能,可適用于如Java同構、異構語言、容器、云原生等各種多樣化的應用場景。

ShardingSphere提供的核心功能:

Sharding-Proxy

定位為透明化的

數(shù)據(jù)庫代理端

,提供封裝了

數(shù)據(jù)庫二進制協(xié)議的服務端版本

,用于完成對

異構語言的支持

。

目前已提供MySQL版本,它可以使用

任何兼容MySQL協(xié)議的訪問客戶端

(如:MySQL Command Client, MySQL Workbench, Navicat等)操作數(shù)據(jù),對DBA更加友好。

應用程序完全透明

,可直接當做MySQL使用。

適用于任何兼容MySQL協(xié)議的客戶端。

Sharding-JDBC

定位為

輕量級Java框架

,在Java的JDBC層提供的額外服務。 它使用客戶端直連數(shù)據(jù)庫,以jar包形式提供服務,無需額外部署和依賴,可理解為

增強版的JDBC驅(qū)動,完全兼容JDBC和各種ORM框架

。

以電商SaaS系統(tǒng)為例,前臺應用采用Sharding-JDBC,根據(jù)業(yè)務場景的差異主要分為三種方案。

分庫(用戶)

問題解析:頭部企業(yè)日活高并發(fā)高,單獨分庫避免干擾其他企業(yè)用戶,用戶數(shù)據(jù)的增長緩慢可以不分表。

拆分維度:企業(yè)ID分庫

拆分策略:頭部企業(yè)單獨庫、非頭部企業(yè)一個庫

分庫分表(訂單)

問題解析:訂單數(shù)據(jù)增長速度較快,在分庫之余需要分表。

拆分維度:企業(yè)ID分庫、用戶ID分表

拆分策略:頭部企業(yè)單獨庫、非頭部企業(yè)一個庫,分庫之后用戶ID取模拆分表

單庫分表(附件)

問題解析:附件數(shù)據(jù)特點是并發(fā)量不大,只需要解決數(shù)據(jù)增長問題,所以單庫IO足以支撐的情況下分表即可。

拆分維度:用戶ID分表

拆分策略:用戶ID取模分表

問題一:分布式事務

分布式事務過于復雜也是分布式系統(tǒng)最難處理的問題,由于篇幅有限,后續(xù)會開篇專講這一塊內(nèi)容。

問題二:分布式ID

問題三:跨片查詢

舉個例子,以用戶id分片之后,需要根據(jù)企業(yè)id查詢企業(yè)所有用戶信息。

sharding針對跨片查詢也是能夠支持的,本質(zhì)上sharding的跨片查詢是采用同時查詢多個分片的數(shù)據(jù),然后聚合結果返回,這個方式對資源耗費比較大,特別是對數(shù)據(jù)庫連接資源的消耗。

假設分4個數(shù)據(jù)庫,8個表,則sharding會同時發(fā)出32個SQL去查詢。一下子消耗掉了32個連接;

特別是針對單庫分表的情況要注意,假設單庫分64個表,則要消耗64個連接。如果我們部署了2個節(jié)點,這個時候兩個節(jié)點同時查詢的話,就會遇到數(shù)據(jù)庫連接數(shù)上限問題(mysql默認100連接數(shù))

問題四:分片擴容

隨著數(shù)據(jù)增長,每個片區(qū)的數(shù)據(jù)也會達到瓶頸,這個時候需要將原有的分片數(shù)量進行增加。由于增加了片區(qū),原先的hash規(guī)則也跟著變化,造成了需要將舊數(shù)據(jù)做遷移。

假設原先1個億的數(shù)據(jù),hash分64個表,現(xiàn)在增長到50億的數(shù)據(jù),需要擴容到128個表,一旦擴容就需要將這50億的數(shù)據(jù)做一次遷移,遷移成本是無法想象的。

問題五:一致性哈希

首先,求出每個

服務器的hash值

,將其配置到一個

0~2^n 的圓環(huán)上

(n通常取32)

其次,用同樣的方法求出待

存儲對象的主鍵 hash值

,也將其配置到這個圓環(huán)上。

然后,從數(shù)據(jù)映射到的位置開始順時針查找,將數(shù)據(jù)分布到找到的之一個服務器節(jié)點上。

一致性hash的優(yōu)點在于加入和刪除節(jié)點時只會影響到在哈希環(huán)中相鄰的節(jié)點,而對其他節(jié)點沒有影響。

所以使用一致性哈希在集群擴容過程中可以減少數(shù)據(jù)的遷移。

好了,這次分享到這里,我們?nèi)粘5膶嵺`可能只會用到其中一種方案,但它不是數(shù)據(jù)庫架構的全貌,打開技術視野,才能更好地把存儲工具利用起來。

老規(guī)矩,一鍵三連,日入兩千,點贊在看,年薪百萬!

本文作者:Jensen

7年Java老兵,小米主題設計師,手機輸入法設計師,ProcessOn特邀講師。

曾涉獵航空、電信、IoT、垂直電商產(chǎn)品研發(fā),現(xiàn)就職于某知名電商企業(yè)。

技術公眾號

【架構師修行錄】

號主,專注于分享日常架構、技術、職場干貨,Java Goals:架構師。

交個朋友,一起成長!

數(shù)據(jù)庫性能瓶頸分析的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關于數(shù)據(jù)庫性能瓶頸分析,深入剖析數(shù)據(jù)庫性能瓶頸,提升系統(tǒng)穩(wěn)定性和效率,數(shù)據(jù)庫架構選型與落地,看這篇就夠了的信息別忘了在本站進行查找喔。

香港服務器選創(chuàng)新互聯(lián),香港虛擬主機被稱為香港虛擬空間/香港網(wǎng)站空間,或者簡稱香港主機/香港空間。香港虛擬主機特點是免備案空間開通就用, 創(chuàng)新互聯(lián)香港主機精選cn2+bgp線路訪問快、穩(wěn)定!


當前標題:深入剖析數(shù)據(jù)庫性能瓶頸,提升系統(tǒng)穩(wěn)定性和效率(數(shù)據(jù)庫性能瓶頸分析)
分享地址:http://m.5511xx.com/article/ccscshp.html