主頁(yè) > 知識(shí)庫(kù) > SQL SERVER數(shù)據(jù)庫(kù)重建索引的方法

SQL SERVER數(shù)據(jù)庫(kù)重建索引的方法

熱門(mén)標(biāo)簽:怎樣把地圖標(biāo)注導(dǎo)入公司地址 地圖標(biāo)注一個(gè)圓圈怎么用 廣州人工電銷(xiāo)機(jī)器人費(fèi)用 洛陽(yáng)外呼系統(tǒng)平臺(tái) 電銷(xiāo)機(jī)器人被曝光 真人語(yǔ)音電銷(xiāo)機(jī)器人 400外呼系統(tǒng)合法 寧波人工外呼系統(tǒng)有效果嗎 如何在地圖標(biāo)注自己店鋪

一.查詢(xún)思路

1.想要判斷數(shù)據(jù)庫(kù)查詢(xún)緩慢的問(wèn)題,可以使用如下語(yǔ)句,可以列出查詢(xún)語(yǔ)句的平均時(shí)間,總時(shí)間,所用的CPU時(shí)間等信息

SELECT creation_time N'語(yǔ)句編譯時(shí)間'
,last_execution_time N'上次執(zhí)行時(shí)間'
,total_physical_reads N'物理讀取總次數(shù)'
,total_logical_reads/execution_count N'每次邏輯讀次數(shù)'
,total_logical_reads N'邏輯讀取總次數(shù)'
,total_logical_writes N'邏輯寫(xiě)入總次數(shù)'
, execution_count N'執(zhí)行次數(shù)'
, total_worker_time/1000 N'所用的CPU總時(shí)間ms'
, total_elapsed_time/1000 N'總花費(fèi)時(shí)間ms'
, (total_elapsed_time / execution_count)/1000 N'平均時(shí)間ms'
,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offsetEND
- qs.statement_start_offset)/2) + 1) N'執(zhí)行語(yǔ)句'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
where SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offsetEND
- qs.statement_start_offset)/2) + 1) not like'%fetch%'
ORDER BY total_elapsed_time / execution_count DESC;


2.列出數(shù)據(jù)庫(kù)每個(gè)表的數(shù)據(jù)量,并且需要運(yùn)維人員對(duì)業(yè)務(wù)足夠了解,知道大概哪些表是查詢(xún)量最多的,可以查看“排在前面的表的磁盤(pán)使用情況”:

3.查看表碎片的情況,可以使用命令

DBCC SHOWCONTIG

可以看到該表掃描密度只有33.52%(最佳狀態(tài)是100%,每個(gè)表頁(yè)都寫(xiě)滿(mǎn)數(shù)據(jù)),遠(yuǎn)遠(yuǎn)低于最佳計(jì)數(shù),也就是說(shuō)這個(gè)表的利用率很低,本來(lái)掃描一頁(yè) 就能出結(jié)果,現(xiàn)在可能需要掃描三頁(yè),增加了查詢(xún)時(shí)間;而邏輯碎片和區(qū)碎片都很多(一般認(rèn)為超過(guò)30%就需要優(yōu)化了),也就是說(shuō)同樣一頁(yè),數(shù)據(jù)很少而碎片很 多,占用了過(guò)多的數(shù)據(jù)庫(kù)資源。
4.根據(jù)你對(duì)業(yè)務(wù)的了解,找出查詢(xún)最多的表,對(duì)比他的數(shù)據(jù),查詢(xún)時(shí)間,和碎片程度可以判斷出該表是否需要整理碎片,重建索引,以提高數(shù)據(jù)庫(kù)性能。
重建索引的語(yǔ)句為:

use[數(shù)據(jù)庫(kù)名]
ALTER INDEX ALL ON [表名稱(chēng)] REBUILD;

重建后,同樣的一張表NWME_Company_Index,再次查詢(xún)表碎片情況的結(jié)果如下:

可以看到密度已經(jīng)變?yōu)?6.9%,而邏輯碎片幾乎沒(méi)有了。

5.現(xiàn)在可以看一下整理碎片后,是否真的對(duì)查詢(xún)性能優(yōu)化了,再次運(yùn)行第一點(diǎn)列出的命令查看可以發(fā)現(xiàn),大部分查詢(xún)語(yǔ)句所用的平均時(shí)間都下降了接近一半:

現(xiàn)在可以到前臺(tái)實(shí)際體驗(yàn)優(yōu)化后的效果了。

您可能感興趣的文章:
  • Django如何自定義model創(chuàng)建數(shù)據(jù)庫(kù)索引的順序
  • MySQL中有哪些情況下數(shù)據(jù)庫(kù)索引會(huì)失效詳析
  • 淺談數(shù)據(jù)庫(kù)索引的作用及原理
  • MongoDB數(shù)據(jù)庫(kù)中索引(index)詳解
  • PostgreSQL 查看數(shù)據(jù)庫(kù),索引,表,表空間大小的示例代碼
  • 數(shù)據(jù)庫(kù)中聚簇索引與非聚簇索引的區(qū)別[圖文]
  • 數(shù)據(jù)庫(kù)索引的知識(shí)點(diǎn)整理小結(jié),你所需要了解的都在這兒了

標(biāo)簽:南昌 咸寧 東營(yíng) 石家莊 珠海 北海 煙臺(tái) 晉中

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL SERVER數(shù)據(jù)庫(kù)重建索引的方法》,本文關(guān)鍵詞  SQL,SERVER,數(shù)據(jù)庫(kù),重建,索引,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL SERVER數(shù)據(jù)庫(kù)重建索引的方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于SQL SERVER數(shù)據(jù)庫(kù)重建索引的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章