資料庫優化

2021-10-04 01:23:19 字數 2465 閱讀 4430

資料庫本質是檔案,對其進行操作也就是對檔案進行io流操作

批量操作相比於單條資料操作,減少了io流操作的次數,有效的提高了操作效能

不管執行什麼sql語句,都會記錄日誌,一次sql操作會有兩次io流操作

查詢有關聯的表的資料時,最好不要採用子查詢(尤其是相關子查詢),使用聯表查詢的本質還是減少io流操作

硬體上提公升

mysql資料庫引擎:

1、innodb:

支援事務處理(能夠回滾)

支援外來鍵約束

不支援全文索引

2、myisam:

不支援事務處理

不支援外來鍵約束

支援全文索引

寫操作多於讀操作時,使用innodb;

讀操作多於寫操作時,能夠承擔資料風險時,使用myisam

小型應用一般使用myisam

大型應用使用innodb(資料量大於百萬以上,且需要進行事務控制或外來鍵約束)

選擇引擎時需要考慮

1、是否需要支援事務

2、是否要使用全文索引

3、資料量的大小

索引(inedex)

索引是對資料庫表中一列或多列的字段值進行排序的一種結構

用於提高查詢效能,但是降低了資料操作的效能,進行資料操作時會同時維護索引

單列索引:

普通索引:沒有限制

唯一索引:值必須為唯一,允許空值(unique)

主鍵索引:值不能為空的唯一索引

全文索引:用於檢索文字資訊,僅myisam可用

組合索引:

組合普通索引

組合唯一索引:遵循「最左字首」原則

使用索引的優缺點:

可以通過建立唯一索引保證資料庫中每一行資料的唯一性

建立索引可以減少表的檢索行數,提高檢索資料的速度

建立索引可以加速表與表之間直接的相連,提公升聯表查詢效率

在分組和排序字句進行資料檢索時,可以減少查詢時間中分組和排序消耗的時間(資料庫記錄重新排列)

建立索引可以在查詢中使用索引,可以大大提高效能

在建立和維護索引,會消耗更多的事件

索引會佔據物理空間,除了資料表需要占用物理空間之外,每乙個索引還會占用一定的物理空間

當對表進行更新操作時,索引也要動態維護,會增加維護所需的時間

判斷是否為null時引擎會放棄使用索引

檢視(view)

檢視是一種資料庫虛擬表,只包含使用時動態檢索資料的查詢

檢視僅僅是用來檢視儲存在別處的資料的一種方式。本身不包含資料,在改變資料後,檢視會返回改變過的資料

通常只做查詢操作

使用檢視簡化查詢語句

使用檢視重新格式化查詢的資料

使用檢視過濾不想要的資料

使用檢視計算多個字段

規則和限制

檢視名不能重複

檢視建立需要足夠的許可權

檢視數量沒有限制

檢視可以巢狀

允許使用order by進行排序

檢視不支援索引和觸發器

檢視可以和表一起使用

作用重用sql語句

簡化複雜的sql操作

使用表的組成部分而不是整個表

保護資料

更改資料格式和表示

觸發器(trigger)(檢查格式、資料備份)

是由事件來觸發某個操作,當資料庫執行事件時,會啟用觸發器執行相應的操作

不支援檢視

使用old和new來獲取

儲存過程(stored procedure)

儲存過程是儲存在資料庫中可以執行特定功能的一組sql**的程式段,類似一門程式語言,

也包括了資料型別、流程控制、輸入和輸出和它自己的函式庫。

效能高,

儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般sql語句每執行一次就編譯一次,

所以使用儲存過程可提高資料庫執行速度,效率要比t-sql語句高。

節省流量,

乙個儲存過程在程式在網路中互動時可以替代大堆的t-sql語句,所以也能降低網路的通訊量,提高通訊速率。

簡化開發,

儲存過程可以重複使用,可減少資料庫開發人員的工作量。

當對資料庫進行複雜操作時,可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。

安全性高,可設定只有某些使用者才具有對指定儲存過程的使用權

不具備可移植性,

各個資料庫所用語法不同,無法跨資料庫使用

與觸發器類似,建立後無法進行修改

定義變數使用declare,default設定初始預設值。

區域性變數在宣告時需要宣告資料型別,使用者變數可不宣告,其他程序可呼叫。

使用select設定變數的化只能使用「:=」,set可以使用「=」和「:=」

容器的範圍需要比資料大

儲存過程的引數由三部分組成:引數型別,引數名稱,資料型別

流程控制

if判斷

switch選擇

迴圈while

repeat

loop

資料庫優化 資料庫設計優化

一 索引優化 1.首先索引不是越多越好,要視情況而定。因為索引會降低insert和update的效率 insert和update有時可能會重建索引。2.乙個表的索參數量最好不要超過6個,擇優而建。3.專案上線後,根據使用者的查詢條件字段稍微調整資料庫中的字段索引。二 分表 1.縱切 根據表字段來且分...

資料庫引擎優化顧問優化資料庫

現在一直在做的專案,資料量相對也不小,開始的時候沒有覺得,因為是剛開始,資料量還很小,在程式使用過程中速度還挺快,但是隨著資料量的不停的增長,發現程式越來越慢,甚至出現了超時的問題,因此要對程式和資料庫進行優化,前期專案比較緊,沒有針對大資料量業務進行分析設計,所以索引等相關優化沒有做到位,通過後期...

資料庫優化

資料庫優化 1 合理使用索引 索引是資料庫中重要的資料結構,它的根本目的就是提高查詢效率。索引的使用要恰到好處,其使用原則如下 在經常進行連線,但是沒有指定為外來鍵的列上建立索引,而不經常連線的字段則由優化器自動生成索引 在頻繁進行排序或分組 即進行groupby或orderby操作 的列上建立索引...