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

Web開發(fā)人員的十個(gè)數(shù)據(jù)庫(kù)優(yōu)化優(yōu)秀實(shí)踐

數(shù)據(jù)庫(kù) MySQL 其他數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)優(yōu)化有點(diǎn)棘手,但完全避免它會(huì)對(duì)您的web應(yīng)用程序產(chǎn)生巨大的影響,導(dǎo)致性能問題。如果你遵循了這10個(gè)web開發(fā)者數(shù)據(jù)庫(kù)優(yōu)化的最佳實(shí)踐,你將開始改善用戶體驗(yàn)和資源管理。

數(shù)據(jù)庫(kù)優(yōu)化已經(jīng)成為web開發(fā)人員提高web應(yīng)用程序性能,從而改善用戶體驗(yàn)的關(guān)鍵。對(duì)一些人來說,這可能聽起來不太吸引人,但好處是值得的。如果正確地優(yōu)化數(shù)據(jù)庫(kù),就可以提高性能、減少瓶頸并節(jié)省資源。

幸運(yùn)的是,有些優(yōu)化技術(shù)在sql查詢中不需要dba級(jí)別(數(shù)據(jù)庫(kù)管理員)的專業(yè)知識(shí)。

為了幫助你開始,我們將看看10個(gè)最佳實(shí)踐,為web開發(fā)者如何優(yōu)化你的數(shù)據(jù)庫(kù)。一旦您了解了這些,您就可以更深入地研究數(shù)據(jù)庫(kù)優(yōu)化。

一、在選擇查詢中使用EXPLAIN

使用EXPLAIN關(guān)鍵字是快速修復(fù)慢速查詢的好方法。它讓您了解如何執(zhí)行查詢,并幫助您找到查詢優(yōu)化的潛在位置。

只需在SELECT查詢前輸入EXPLAIN關(guān)鍵字。這不會(huì)觸發(fā)實(shí)際的查詢,相反,您將看到執(zhí)行計(jì)劃。

當(dāng)您仔細(xì)查看結(jié)果時(shí),您將能夠確定潛在的瓶頸或任何其他問題,如缺少索引,并減少掃描行的數(shù)量。

有了EXPLAIN工具,您可以優(yōu)化查詢,如果有必要,甚至可以改進(jìn)表結(jié)構(gòu)。

二、向搜索列添加索引

如果您按特定列搜索表,則很可能通過索引該列來提高查詢性能。

通過向搜索列添加索引,可以減少響應(yīng)時(shí)間并優(yōu)化資源使用。盡管索引可能對(duì)所有查詢都沒有幫助,但在大多數(shù)情況下它絕對(duì)有用。

但是要記住,有索引的表比沒有索引的表需要更多的時(shí)間來更新。這是因?yàn)樗饕残枰?。因此,明智的做法是只為頻繁搜索的列創(chuàng)建索引,而不是為更新比讀取次數(shù)更多的表創(chuàng)建索引。

三、盡可能的使用標(biāo)識(shí)字段

在表中使用Identity字段作為主鍵有幾個(gè)好處。

首先,它更快—您可以在查詢中簡(jiǎn)單地使用整數(shù),而不是更長(zhǎng)的字符串字段。這將為您節(jié)省一些內(nèi)存,因?yàn)檎麛?shù)可以更短。

其次,它更安全——使用應(yīng)用程序數(shù)據(jù)字段可能會(huì)導(dǎo)致許多問題。例如,如果您使用名稱或地址作為PRIMARY KEY,那么如果客戶端或用戶更改了他們的名稱、移動(dòng)了,甚至只是出現(xiàn)了拼寫錯(cuò)誤,那么您可能會(huì)遇到問題。

因此,為了加快查詢速度并提高工作效率,可以在每個(gè)表中添加一個(gè)Identity列,這樣就可以使用它作為一個(gè)PRIMARY KEY,并使用AUTO_INCREMENT和一個(gè)合適類型的INT變量。

四、默認(rèn)情況下避免使用 NULL 值

盡量使用NOT NULL代替NULL。

一般來說,選擇NOT NULL意味著更快的查詢,這得益于更有效地使用索引,并避免了專門測(cè)試每個(gè)值是否為NULL的需要。最重要的是,你使用更少的存儲(chǔ)空間,根據(jù)MySQL文檔,NULL列需要額外的空間。

節(jié)省空間是特別重要的,如果你使用一個(gè)網(wǎng)絡(luò)主機(jī)為你的數(shù)據(jù)庫(kù),因?yàn)榧词挂恍┳詈玫木W(wǎng)絡(luò)主機(jī)服務(wù)也不能提供無限的存儲(chǔ)空間?,F(xiàn)在,每個(gè)專欄節(jié)省一個(gè)比特看起來并不是很多,但是如果你在經(jīng)營(yíng)一個(gè)電子商務(wù)商店,有成千上萬的產(chǎn)品,你會(huì)節(jié)省很多資源。

使用NOT NULL,您將能夠像處理任何變量一樣處理字段,同時(shí)避免使用NULL可能產(chǎn)生的某些邊緣情況。

當(dāng)然,仍然有一些情況下使用NULL更有益—但在大多數(shù)情況下,您可以使用NOT NULL實(shí)現(xiàn)相同的結(jié)果。

五、對(duì)查詢使用無緩沖模式

為了節(jié)省時(shí)間和內(nèi)存,可以使用無緩沖查詢。

默認(rèn)情況下,SQL查詢使用緩沖模式。這會(huì)增加您的等待時(shí)間并消耗資源,因?yàn)樵诓樵兺瓿芍安粫?huì)返回結(jié)果—而是存儲(chǔ)在內(nèi)存中。如果是較大的查詢,并且您有一個(gè)巨大的數(shù)據(jù)庫(kù),那么使用緩沖查詢將需要大量?jī)?nèi)存。

相比之下,當(dāng)使用無緩沖查詢時(shí),在執(zhí)行查詢之前不會(huì)自動(dòng)存儲(chǔ)結(jié)果。一旦檢索到第一行,您就可以開始處理它們。

但是請(qǐng)記住,在處理結(jié)果集時(shí),未緩沖查詢不允許在同一個(gè)連接上發(fā)出進(jìn)一步的查詢。

六、使列緊湊

優(yōu)化磁盤空間對(duì)于保持?jǐn)?shù)據(jù)庫(kù)引擎良好運(yùn)行至關(guān)重要。確保不會(huì)影響性能的一種非常簡(jiǎn)單的方法是使用小而緊湊的列。

因此,您應(yīng)該始終選擇對(duì)您的應(yīng)用程序最有用的整數(shù)類型。例如,如果您知道您的表不會(huì)有大量的行,那么不要自動(dòng)使用INT作為主鍵—您實(shí)際上可能會(huì)從使用SMALLINT甚至TINYINT中受益。

對(duì)于DATE和DATETIME也是如此——如果您不特別需要時(shí)間部分,只需使用DATE即可。DATETIME數(shù)據(jù)類型占用8個(gè)字節(jié),而DATE只占用3個(gè)字節(jié)—因此這樣可以節(jié)省5個(gè)字節(jié)。

七、保持表的靜態(tài)(固定長(zhǎng)度)

另一種優(yōu)化數(shù)據(jù)庫(kù)性能的方法是使用靜態(tài)表。

這意味著您的表不應(yīng)該包括任何長(zhǎng)度可變的列,如TEXT或BLOB。您可以使用CHAR、VARCHAR、BINARY和VARBINARY列,但是需要填充它們以匹配指定的列寬度。

使用固定長(zhǎng)度的表是有益的,因?yàn)樗鼈兏?,更容易緩存。除此之外,靜態(tài)表更安全——它們?cè)诒罎⒑蟾菀字亟ā?/p>

但是,靜態(tài)表在某些情況下可能比動(dòng)態(tài)格式的表需要更多的磁盤空間—特別是當(dāng)您使用CHAR和VARCHAR列時(shí)。但是性能上的改進(jìn)可能會(huì)超過對(duì)磁盤空間的任何關(guān)注。

八、安裝對(duì)象關(guān)系映射器(ORM)

使用ORM是優(yōu)化數(shù)據(jù)庫(kù)工作方式的另一種好方法。

首先,ORM有助于消除人為錯(cuò)誤因素,因?yàn)樗鼮槟隽撕芏嗍虑椤D槐刈约壕帉懩敲炊啻a,而且ORM會(huì)為您處理許多重復(fù)的任務(wù),從而減少您的工作量。

ORM還可以提高系統(tǒng)的安全性,因?yàn)闇?zhǔn)備和清理查詢使SQL注入變得更加困難。

最重要的是,ORM將在內(nèi)存中緩存實(shí)體,這減少了數(shù)據(jù)庫(kù)和CPU的負(fù)載。

當(dāng)然,ORM有其優(yōu)點(diǎn)和缺點(diǎn),可能并不完全適合您的使用。但是有一些簡(jiǎn)單的方法可以避免濫用對(duì)象-關(guān)系映射。此外,還有一些其他的性能調(diào)優(yōu)和優(yōu)化插件可能更適合您。

九、批量執(zhí)行DELETE和UPDATE查詢

刪除和更新數(shù)據(jù)——尤其是在非常大的表中——可能會(huì)很復(fù)雜。這可能會(huì)花費(fèi)很多時(shí)間,而且這兩個(gè)命令都作為單個(gè)事務(wù)執(zhí)行。這意味著,如果出現(xiàn)任何中斷,整個(gè)事務(wù)都必須回滾,這可能會(huì)更加耗時(shí)。

但是,如果您遵循了批量運(yùn)行DELETE和UPDATE查詢的良好實(shí)踐,您將能夠通過增加并發(fā)性和減少瓶頸來節(jié)省時(shí)間。

如果一次刪除和更新的行數(shù)較少,則可以在將批提交到磁盤時(shí)執(zhí)行其他查詢。而且您可能需要做的任何回滾都將花費(fèi)更少的時(shí)間。

十、使用程序分析()獲得更多提示

優(yōu)化數(shù)據(jù)庫(kù)的最后一個(gè)最佳實(shí)踐是使用內(nèi)置功能:PROCEDURE ANALYSE()。更具體地說,如果將該命令添加到某個(gè)SQL語句中,它將查看列,然后推薦最佳數(shù)據(jù)類型和數(shù)據(jù)長(zhǎng)度。

在將新數(shù)據(jù)導(dǎo)入到表中之后——或者甚至檢查現(xiàn)有表中是否存在不一致的地方——這可能特別有用。

如果您實(shí)現(xiàn)了這些建議,您可能會(huì)節(jié)省一些空間。然而,請(qǐng)記住,這些只是建議,你必須真正考慮它們是否適合你的特定目的。

結(jié)論

數(shù)據(jù)庫(kù)優(yōu)化有點(diǎn)棘手,但完全避免它會(huì)對(duì)您的web應(yīng)用程序產(chǎn)生巨大的影響,導(dǎo)致性能問題。

如果你遵循了這10個(gè)web開發(fā)者數(shù)據(jù)庫(kù)優(yōu)化的最佳實(shí)踐,你將開始改善用戶體驗(yàn)和資源管理。

一旦實(shí)現(xiàn)了這些方法,請(qǐng)進(jìn)一步了解如何提高數(shù)據(jù)庫(kù)性能的技巧。

原文鏈接:https://dzone.com/articles/10-database-optimization-best-practices-for-web-de?

責(zé)任編輯:武曉燕 來源: 新鈦云服
相關(guān)推薦

2022-08-31 15:45:57

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

2023-05-11 16:29:39

Javascript開發(fā)前端

2022-03-14 14:11:22

Java開發(fā)編程語言

2016-11-09 13:46:00

云數(shù)據(jù)庫(kù)

2021-11-02 08:54:10

開發(fā)編程測(cè)試

2021-11-06 23:07:47

開發(fā)網(wǎng)站編程

2020-12-21 09:00:00

數(shù)據(jù)庫(kù)MySQL技術(shù)

2016-10-14 19:30:21

云計(jì)算云數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)

2021-09-27 09:00:00

開發(fā)微服務(wù)架構(gòu)

2023-02-02 08:00:00

SQLJava開發(fā)

2015-06-04 14:41:37

WebPython框架

2023-03-13 14:58:40

2023-02-06 18:27:00

開發(fā)人員語言

2023-02-26 18:43:05

SQL工具數(shù)據(jù)庫(kù)

2015-09-21 09:34:57

2015-10-13 10:00:04

Web開發(fā)人員網(wǎng)站

2024-10-21 13:15:03

2016-10-18 14:17:35

數(shù)據(jù)開發(fā)商業(yè)智能

2023-01-09 15:28:55

2024-11-04 14:18:32

JavaScript編程語言開發(fā)
點(diǎn)贊
收藏

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