資料庫儲存的原理:
儲存過程是乙個可程式設計的函式,它在資料庫中建立並儲存。它可以有sql語句和一些特殊的控制結構組成。當希望在不同的應用程式或平台上執行相同的函式,或者封裝特定功能時,儲存過程是非常有用的。資料庫中的儲存過程可以看做是對程式設計中物件導向方法的模擬。它允許控制資料的訪問方式。
儲存過程有以下優點:
1、儲存過程能實現較快的執行速度
2、儲存過程允許標準元件是程式設計
3、儲存過程可以用流程控制語句編寫,有較強的靈活性,可以完成複雜的判斷和較複雜的運算
4、儲存過程可被作為一種安全機制來允許利用
5、儲存過程和能減少網路流量
資料庫優化:
1、優化索引,sql語句,分析慢查詢
2、設計表的時候完全根據資料庫的設計正規化來設計資料庫
3、使用快取,把經常訪問的資料而且不需要經常變化的資料放到快取中,能節約磁碟io
4、優化硬體;採用ssd,使用磁碟佇列技術(raid0,raid1,raid5)等
5、採用mysql內部自帶的表分割槽技術,把資料分層不同的檔案,能提高磁碟的讀取效率
6、垂直分表;把一些不經常讀的資料放到一張表裡,節約磁碟io
7、主從分離讀寫;採用主從複製把資料庫的讀操作和寫操作分離開來
8、分庫分表分機器,主要的原理就是資料路由
9、選擇合適的表引擎,引數上的優化
10、進行架構級別的快取,靜態化和分布式
11、不採用全文索引
12、採用更快的儲存方式,例如nosql儲存經常訪問的資料
資料庫優化查詢效率:
1、應盡量避免全表掃瞄,首先應考慮where 及 order by 涉及的列上建立索引
2、應盡量避免在where字句中對字段進行null的判斷,避免使用!= 或 < > 操作符,避免使用 or 連線條件,或者where 引數中使用引數,對欄位進行表示式或者函式操作,否則系統將無法正確使用索引
3、不要在where 子句中的 "=" 左邊進行函式、算術運算或者其他表示式運算,否則系統將可能無法正確使用索引
4、使用索引字段作為條件時,如果該索引是復合索引,那麼必須使用到該索引的第乙個字段作為條件時才能保證系統使用該索引,否則該索引將不能被使用
5、很多時候可以使用exists 代替 in
6、盡量使用數字型字段
7、盡可能的使用varchar/nvarchar 代替 char/nchar
8、任何地方都不要使用sekect * from t ,用具體的字段列表代替 * , 不要返回用不到的任何字段
9、盡量使用表變數代替臨時表
10、避免頻繁建立和刪除臨時表,以減少系統表資源的消耗
11、盡量避免使用游標,因為游標的效率較差
12、在所有的儲存過程和觸發器的開始處設施set nocount on ,在結束時設定 set nocount off
13、盡量避免大事務操作,提高系統併發能力
14、盡量避免向客戶端返回大資料量,若資料量過大,應該考慮相應需求是否合理
事務的特性:
1、原子性:事務的全部操作在資料庫中是不可分割的,要麼全部完成,要麼均不執行
2、一致性:幾個並行執行的事務,其執行結果必須安某一順序序列執行的結果相一致
3、隔離性: 事務的執行不受其他事務的干擾,事務執行的中間結果對其他事務必須是透明的
4、永續性:對於任意已提交事務,系統必須保證該事務對資料庫的改變不被丟失,即使資料庫出現故障
建立mysql資料庫總結 MySQL資料庫總結
引擎 檢視mysql預設引擎 show variables like storage engine 檢視表引擎 show table status from 資料庫名 修改表引擎 alter table 表名 engine innodb 建立時直接定義引擎 create table 表名 engin...
MySQL資料庫總結
引擎 檢視mysql預設引擎 show variables like storage engine 檢視表引擎 show table status from 資料庫名 修改表引擎 alter table 表名 engine innodb 建立時直接定義引擎 create table 表名 engin...
MySql資料庫總結
主鍵 primary key 在表中的唯一標識,不能重複,但可以用兩個欄位來作為主鍵,比如username和password組合起來作為主鍵 外來鍵 foreign key 這列資料引用了另外乙個表的主鍵 unique key uk 表示該項不能重複,允許一條可以為null not null nn ...