{eval=Array;=+count(Array);}

亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

問答專欄Q & A COLUMN

數(shù)據(jù)庫訪問量很大時(shí),如何做優(yōu)化?

DTeamDTeam 回答0 收藏1
收藏問題

3條回答

cloud

cloud

回答于2022-06-28 14:43

你好!如果有大量的訪問用到調(diào)取到數(shù)據(jù)庫時(shí),往往查詢速度會(huì)變得很慢,所以我們需要進(jìn)行優(yōu)化處理。

優(yōu)化從三個(gè)方面考慮:

SQL語句優(yōu)化、

主從復(fù)制,讀寫分離,負(fù)載均衡、

數(shù)據(jù)庫分庫分表。


一、SQL查詢語句優(yōu)化

1、使用索引

建立索引可以使查詢速度得到提升,我們首先應(yīng)該考慮在where及order by,group by涉及的列上建立索引。

2、借助explain(查詢優(yōu)化神器)選擇更好的索引和優(yōu)化查詢語句

SQL 的 Explain 通過圖形化或基于文本的方式詳細(xì)說明了 SQL 語句的每個(gè)部分是如何執(zhí)行以及何時(shí)執(zhí)行的,以及執(zhí)行效果。通過對(duì)選擇更好的索引列,或者對(duì)耗時(shí)久的SQL語句進(jìn)行優(yōu)化達(dá)到對(duì)查詢速度的優(yōu)化。

3、任何地方都不要使用SELECT * FROM語句。

4、不要在索引列做運(yùn)算或者使用函數(shù)

5、查詢盡可能使用limit來減少返回的行數(shù)

6、使用查詢緩存,并將盡量多的內(nèi)存分配給MYSQL做緩存



二、主從復(fù)制,讀寫分離,負(fù)載均衡

目前大多數(shù)的主流關(guān)系型數(shù)據(jù)庫都提供了主從復(fù)制的功能,通過配置兩臺(tái)(或多臺(tái))數(shù)據(jù)庫的主從關(guān)系,可以將一臺(tái)數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)更新同步到另一臺(tái)服務(wù)器上。網(wǎng)站可以利用數(shù)據(jù)庫這一功能,實(shí)現(xiàn)數(shù)據(jù)庫的讀寫分離,從而改善數(shù)據(jù)庫的負(fù)載壓力。一個(gè)系統(tǒng)的讀操作遠(yuǎn)遠(yuǎn)多于寫操作,因此寫操作發(fā)向master,讀操作發(fā)向slaves進(jìn)行操作(簡(jiǎn)單的輪詢算法來決定使用哪個(gè)slave)。

利用數(shù)據(jù)庫的讀寫分離,Web服務(wù)器在寫數(shù)據(jù)的時(shí)候,訪問主數(shù)據(jù)庫(master),主數(shù)據(jù)庫通過主從復(fù)制將數(shù)據(jù)更新同步到從數(shù)據(jù)庫(slave),這樣當(dāng)Web服務(wù)器讀數(shù)據(jù)的時(shí)候,就可以通過從數(shù)據(jù)庫獲得數(shù)據(jù)。這一方案使得在大量讀操作的Web應(yīng)用可以輕松地讀取數(shù)據(jù),而主數(shù)據(jù)庫也只會(huì)承受少量的寫入操作,還可以實(shí)現(xiàn)數(shù)據(jù)熱備份,可謂是一舉兩得。



三、數(shù)據(jù)庫分表、分區(qū)、分庫

1、分表

通過分表可以提高表的訪問效率。有兩種拆分方法:

垂直拆分

在主鍵和一些列放在一個(gè)表中,然后把主鍵和另外的列放在另一個(gè)表中。如果一個(gè)表中某些列常用,而另外一些不常用,則可以采用垂直拆分。

水平拆分

根據(jù)一列或者多列數(shù)據(jù)的值把數(shù)據(jù)行放到兩個(gè)獨(dú)立的表中。

2、分區(qū)

分區(qū)就是把一張表的數(shù)據(jù)分成多個(gè)區(qū)塊,這些區(qū)塊可以在一個(gè)磁盤上,也可以在不同的磁盤上,分區(qū)后,表面上還是一張表,但是數(shù)據(jù)散列在多個(gè)位置,這樣一來,多塊硬盤同時(shí)處理不同的請(qǐng)求,從而提高磁盤I/O讀寫性能。實(shí)現(xiàn)比較簡(jiǎn)單,包括水平分區(qū)和垂直分區(qū)。

3、分庫

分庫是根據(jù)業(yè)務(wù)不同把相關(guān)的表切分到不同的數(shù)據(jù)庫中,比如web、bbs、blog等庫。

分庫解決的是數(shù)據(jù)庫端 并發(fā)量的問題。分庫和分表并不一定兩個(gè)都要上,比如數(shù)據(jù)量很大,但是訪問的用戶很少,我們就可以只使用分表不使用分庫。如果數(shù)據(jù)量只有1萬,而訪問用戶有一千,那就只使用分庫。

注意:分庫分表最難解決的問題是統(tǒng)計(jì),還有跨表的連接(比如這個(gè)表的訂單在另外一張表),解決這個(gè)的方法就是使用中間件,比如大名鼎鼎的MyCat,用它來做路由,管理整個(gè)分庫分表,乃至跨庫跨表的連接

評(píng)論0 贊同0
  •  加載中...
superPershing

superPershing

回答于2022-06-28 14:43

如果有一個(gè)特別大的訪問量到數(shù)據(jù)庫上時(shí),往往查詢速度會(huì)變得很慢,所以我們需要進(jìn)行優(yōu)化。優(yōu)化從三個(gè)方面考慮:SQL語句優(yōu)化、主從復(fù)制,讀寫分離,負(fù)載均衡、數(shù)據(jù)庫分庫分表。

一、SQL查詢語句優(yōu)化

1、使用索引

建立索引可以使查詢速度得到提升,我們首先應(yīng)該考慮在where及order by,group by涉及的列上建立索引。

2、借助explain(查詢優(yōu)化神器)選擇更好的索引和優(yōu)化查詢語句

SQL 的 Explain 通過圖形化或基于文本的方式詳細(xì)說明了 SQL 語句的每個(gè)部分是如何執(zhí)行以及何時(shí)執(zhí)行的,以及執(zhí)行效果。通過

對(duì)選擇更好的索引列,或者對(duì)耗時(shí)久的SQL語句進(jìn)行優(yōu)化達(dá)到對(duì)查詢速度的優(yōu)化。

3、任何地方都不要使用SELECT * FROM語句。

4、不要在索引列做運(yùn)算或者使用函數(shù)

5、查詢盡可能使用limit來減少返回的行數(shù)

6、使用查詢緩存,并將盡量多的內(nèi)存分配給MYSQL做緩存

二、主從復(fù)制,讀寫分離,負(fù)載均衡

目前大多數(shù)的主流關(guān)系型數(shù)據(jù)庫都提供了主從復(fù)制的功能,通過配置兩臺(tái)(或多臺(tái))數(shù)據(jù)庫的主從關(guān)系,可以將一臺(tái)數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)更新同步到另一臺(tái)服務(wù)器上。網(wǎng)站可以利用數(shù)據(jù)庫這一功能,實(shí)現(xiàn)數(shù)據(jù)庫的讀寫分離,從而改善數(shù)據(jù)庫的負(fù)載壓力。一個(gè)系統(tǒng)的讀操作遠(yuǎn)遠(yuǎn)多于寫操作,因此寫操作發(fā)向master,讀操作發(fā)向slaves進(jìn)行操作(簡(jiǎn)單的輪詢算法來決定使用哪個(gè)slave)。

利用數(shù)據(jù)庫的讀寫分離,Web服務(wù)器在寫數(shù)據(jù)的時(shí)候,訪問主數(shù)據(jù)庫(master),主數(shù)據(jù)庫通過主從復(fù)制將數(shù)據(jù)更新同步到從數(shù)據(jù)庫(slave),這樣當(dāng)Web服務(wù)器讀數(shù)據(jù)的時(shí)候,就可以通過從數(shù)據(jù)庫獲得數(shù)據(jù)。這一方案使得在大量讀操作的Web應(yīng)用可以輕松地讀取數(shù)據(jù),而主數(shù)據(jù)庫也只會(huì)承受少量的寫入操作,還可以實(shí)現(xiàn)數(shù)據(jù)熱備份,可謂是一舉兩得。

三、數(shù)據(jù)庫分表、分區(qū)、分庫

1、分表

通過分表可以提高表的訪問效率。有兩種拆分方法:

垂直拆分

在主鍵和一些列放在一個(gè)表中,然后把主鍵和另外的列放在另一個(gè)表中。如果一個(gè)表中某些列常用,而另外一些不常用,則可以采用垂直拆分。

水平拆分

根據(jù)一列或者多列數(shù)據(jù)的值把數(shù)據(jù)行放到兩個(gè)獨(dú)立的表中。

2、分區(qū)

分區(qū)就是把一張表的數(shù)據(jù)分成多個(gè)區(qū)塊,這些區(qū)塊可以在一個(gè)磁盤上,也可以在不同的磁盤上,分區(qū)后,表面上還是一張表,但是數(shù)據(jù)散列在多個(gè)位置,這樣一來,多塊硬盤同時(shí)處理不同的請(qǐng)求,從而提高磁盤I/O讀寫性能。實(shí)現(xiàn)比較簡(jiǎn)單,包括水平分區(qū)和垂直分區(qū)。

3、分庫

分庫是根據(jù)業(yè)務(wù)不同把相關(guān)的表切分到不同的數(shù)據(jù)庫中,比如web、bbs、blog等庫。

分庫解決的是數(shù)據(jù)庫端 并發(fā)量的問題。分庫和分表并不一定兩個(gè)都要上,比如數(shù)據(jù)量很大,但是訪問的用戶很少,我們就可以只使用分表不使用分庫。如果數(shù)據(jù)量只有1萬,而訪問用戶有一千,那就只使用分庫。

注意:分庫分表最難解決的問題是統(tǒng)計(jì),還有跨表的連接(比如這個(gè)表的訂單在另外一張表),解決這個(gè)的方法就是使用中間件,比如大名鼎鼎的MyCat,用它來做路由,管理整個(gè)分庫分表,乃至跨庫跨表的連接(Java自學(xué)網(wǎng)【javazx.com】推薦)

評(píng)論0 贊同0
  •  加載中...
bingo

bingo

回答于2022-06-28 14:43

當(dāng)數(shù)據(jù)量很大的時(shí)候,主要從以下幾點(diǎn)入手。

索引:

任何時(shí)候創(chuàng)建索引都是第一選擇,當(dāng)數(shù)據(jù)量很大嗯時(shí)候,有沒有索引的查詢速度可以說是指數(shù)級(jí)別的差距,通過索引可以大幅度提升檢索效率。

分表:

當(dāng)數(shù)據(jù)量非常大的時(shí)候,索引可能已經(jīng)不起作用了,這個(gè)時(shí)候我們就需要對(duì)數(shù)據(jù)分表存儲(chǔ),可以水平分表和垂直分表,通過分表,一個(gè)表的數(shù)據(jù)量變少了,就是復(fù)雜問題簡(jiǎn)單處理,細(xì)分處理。

分布式:

一個(gè)數(shù)據(jù)庫的數(shù)據(jù)量過大的時(shí)候,我們可以考慮部署多個(gè)數(shù)據(jù)庫,這樣每個(gè)數(shù)據(jù)庫的數(shù)據(jù)量相對(duì)來說減少了。

緩存:

對(duì)熱數(shù)據(jù)進(jìn)行緩存,28定律存在于整個(gè)宇宙中,經(jīng)常檢索的數(shù)據(jù)一定是少部分?jǐn)?shù)據(jù),我們緩存它們,可以大大提升數(shù)據(jù)庫查詢效率。

評(píng)論0 贊同0
  •  加載中...

最新活動(dòng)

您已邀請(qǐng)0人回答 查看邀請(qǐng)

我的邀請(qǐng)列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費(fèi)偷看金額在0.1-10元之間
<