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

MySQL查詢緩慢的N種原因,以及N+1種解決方法

數(shù)據(jù)庫 MySQL
昨天查詢數(shù)據(jù)庫的時(shí)還正常,今早來上班時(shí),SQL語句查詢就突然變得很慢了。這樣的情況我相信你一定遇到過。 下面就讓小編來帶你了解其中的原因吧!

昨天查詢數(shù)據(jù)庫的時(shí)還正常,今早來上班時(shí),SQL語句查詢就突然變得很慢了。這樣的情況我相信你一定遇到過。 下面就讓小編來帶你了解其中的原因吧!

[[266301]]

本篇文章簡(jiǎn)單總結(jié)了一下可能導(dǎo)致數(shù)據(jù)庫查詢慢的原因,希望能給大家后續(xù)查詢優(yōu)化提供一下指導(dǎo)。

SQL語句查詢突然變得很慢,常見的情況有以下幾種:

  • 電腦系統(tǒng)內(nèi)存不足:和咱們的電腦一樣,當(dāng)內(nèi)存不足的時(shí)候,就會(huì)變得很卡!
  • 網(wǎng)速突然降速了:當(dāng)網(wǎng)絡(luò)速度變慢,HTTP 的請(qǐng)求也會(huì)變慢!
  • 你所寫的SQL語句不是***解

兩個(gè)原則

兩條快于一條:

MySQL查詢緩慢的N種原因,以及N+1種解決方法

***條SQL語句中,where查詢語句中出現(xiàn)了null,這樣就是導(dǎo)致數(shù)據(jù)庫的引擎不會(huì)使用索引,而采取的是進(jìn)行全表掃描一遍,這樣的查詢就會(huì)變得很慢。如果使用0來代替null,即為第二條SQL語句,則數(shù)據(jù)庫查詢運(yùn)行速度的就會(huì)提高

精準(zhǔn)快于全表:

MySQL查詢緩慢的N種原因,以及N+1種解決方法

很明顯,***條SQL語句的執(zhí)行速度要比第二條SQL語句快的多。因?yàn)?**條SQL語句使用的是精準(zhǔn)查詢,索引查詢;第二條SQL語句是將表中所有的數(shù)據(jù)都檢索一遍,相當(dāng)于全表查詢,這樣是很消耗時(shí)間的和資源的。

查詢的數(shù)據(jù)庫數(shù)據(jù)量變得很大

當(dāng)你SQL Server 中所查詢的數(shù)據(jù)量很大時(shí),也會(huì)造成你的數(shù)據(jù)庫很慢。

比方說 :我有一個(gè)數(shù)據(jù)量達(dá)到幾百萬的商品表,現(xiàn)在我需要查里面某些商品的信息,這樣的查詢也會(huì)很慢哦!例如:

MySQL查詢緩慢的N種原因,以及N+1種解決方法

表中數(shù)據(jù)上百萬的數(shù)據(jù)量,要在這海量的數(shù)據(jù)中找到你所需要的商品信息,如果你寫上這樣的SQL語句,查詢速度必須慢!

解決方案:

使用索引:

  1. //--建立索引 

MySQL查詢緩慢的N種原因,以及N+1種解決方法

這樣的情況下,可以明顯增加查詢時(shí)間。因?yàn)槭褂昧怂饕?,可以在海量的?shù)據(jù)中,快速的找到你所需要的信息,而不是在上百萬的表數(shù)據(jù)中,一個(gè)個(gè)的檢索到你所需要的信息。

數(shù)據(jù)庫發(fā)生死鎖現(xiàn)象

我們知道當(dāng)程序發(fā)生死鎖現(xiàn)象之后,程序就會(huì)卡在那個(gè)位置會(huì)變得很慢,很慢甚至一點(diǎn)都不動(dòng)。所以,當(dāng)你的SQL語句出現(xiàn)死鎖現(xiàn)象之后,數(shù)據(jù)庫查詢也會(huì)很慢!

數(shù)據(jù)庫死鎖現(xiàn)象是指:兩個(gè)或者是兩個(gè)以上的SQL語句,爭(zhēng)相訪問同一個(gè)數(shù)據(jù)表,并且在***天SQL語句訪問表的時(shí)候,同時(shí)將數(shù)據(jù)表給鎖住了。就會(huì)造成第二條,第三條SQL語句不能訪問到表而進(jìn)行遲遲等待。如果沒有人員原因干預(yù)的話,就是一直處于這種狀態(tài)下,所以叫做死鎖。

解決方法:

這種SQL語句發(fā)送死鎖現(xiàn)象,一般都是bug造成的。修改程序的邏輯順序,給出一個(gè)合適的程序執(zhí)行邏輯順序。避免同時(shí)鎖定兩個(gè)資源的現(xiàn)象發(fā)生。給SQL語句安排一個(gè)先后順序。

I/O 執(zhí)行響應(yīng)時(shí)間太長(zhǎng)

MySQL查詢緩慢的N種原因,以及N+1種解決方法

我們都知道木桶原理,決定盛水多少的,不是長(zhǎng)木板而是那些短木板。同樣,對(duì)于數(shù)據(jù)庫而言 ,電腦系統(tǒng)的硬件設(shè)備 ——磁盤I/O 則是短木板。在程序執(zhí)行中,我們經(jīng)常會(huì)發(fā)現(xiàn)系統(tǒng)中的I/O,一直在不停地執(zhí)行,而CPU卻在清閑的等待。造成這種原因的發(fā)生是因?yàn)椋疟P的I/O(即磁盤的讀寫速度)遠(yuǎn)遠(yuǎn)跟不上CPU的處理速度。

優(yōu)化方案:

  • 盡可能的將程序放到內(nèi)存中去執(zhí)行
  • 當(dāng)讀寫I/O響應(yīng)速度跟不上時(shí),增加硬盤的個(gè)數(shù),擴(kuò)大存儲(chǔ)
  • 盡可能的選擇一些讀寫速度高的磁盤來解決問題(ssd)

End

當(dāng)?shù)诙齑蜷_電腦時(shí),發(fā)現(xiàn)數(shù)據(jù)庫變得緩慢時(shí),不妨試一試上面的方法,一定可以有意想不到的驚喜收獲。

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2010-08-23 09:50:20

Ruby on Rai

2010-09-06 09:03:17

SQLselect語句

2023-06-13 18:27:29

數(shù)量Java定期測(cè)試

2010-11-15 10:49:23

求職

2010-11-09 14:35:48

SQL Server查

2018-11-30 08:38:24

裁員互聯(lián)網(wǎng)電商

2010-11-23 10:11:23

mysql建表亂碼

2023-03-06 07:53:36

JavaN種內(nèi)部類

2009-02-26 08:42:31

聯(lián)想裁員賠償標(biāo)準(zhǔn)

2025-04-24 11:09:13

2011-06-23 09:07:16

2010-10-13 17:22:12

MySQL查詢亂碼

2022-03-18 09:42:54

JavaString

2012-06-06 16:58:35

SaaS

2023-03-06 09:20:33

CSS顏色混合

2022-02-18 11:26:23

日志程序Linux

2018-12-14 12:07:53

Nginxweb服務(wù)器

2010-04-26 16:31:09

Oracle SQL

2014-07-23 08:59:20

Java數(shù)據(jù)計(jì)算層

2010-11-19 11:57:15

Oracle密碼丟失
點(diǎn)贊
收藏

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