數據庫相關知識整理

一、數據庫索引
     索引是對數據庫表中一個或者多個列的值進行排序的數據結構,以協助快速查詢、更新數據庫表中的數據。
二、事務的特性
     事務簡單來講:一個Session中所進行全部的操做,要麼同時成功,要麼同時失敗。
     做爲單個邏輯工做單位執行的一系列操做,知足四大特性
     ①、原子性:事務做爲一個總體被執行,要麼所有執行,要麼所有不執行
     ②、一致性:保證數據庫狀態從一個一致狀態轉爲另外一個一致狀態
     ③、隔離性:多個事務併發執行時,一個事務的執行不該該影響其餘事務的執行
     ④、持久性:一個事務一旦提交,對數據庫的修改應該永久保存
三、事務的隔離級別
     隔離級別決定一個session中的事務可能對另外一個session中的事務的影響。ANSI標準定義了4個隔離級別,MySql的InnoDB都支持,分別是:
    ①、讀未提交(READ UNCOMMITTED):最低級別的隔離,運行一個事務讀取另一個事務還未提交的數據,這樣可能性能提升,可是會致使髒讀
    ②、讀已提交(READ COMMITTED):在一個事務中只容許對其餘事務已經提交的記錄可見,該隔離級別不能避免不可重複讀問題
    ③、可重複讀(REPEATABLE READ):在一個事務開始後,其餘事務對數據庫的修改在本事務中不可見,知道本事務提交或者回滾。可是,其餘事務的插入/刪除操做是對該事務是可見的,也就是說,該隔離級別並不能避免幻象讀問題。在一個事務中重複查詢的結果同樣,除非自己事務中更新數據庫
    ④、序列化(SERIALIZABLE):最高級別的隔離,至容許事務串行執行
四、MySql的隔離級別及事務支持
     MySql的默認隔離級別是可重複讀
     MySql的事務支持不是綁定在MySql服務器自己,而是與存儲引擎相關:
     MyISAM引擎:不支持事務,用於只讀程序提升性能
     InnoDB引擎:MySql5.5後的默認引擎,支持ACID事務,行級鎖、併發
     Berkeley DB引擎:支持事務
五、drop、delete、truncate的區別
     drop直接刪除表;delete刪除表中數據,可帶where字句;truncate清空表中數據,再插入時自增id又從1開始
六、SQL語句優化策略
     ①、優化insert語句,一次插入多值;
     ②、避免在where子句中使用!=或者<>操做符,不然會放棄使用索引進行全表掃描
     ③、避免在where子句中對字段進行null值判斷,不然會放棄使用索引進行全表掃描
     ④、優化嵌套查詢,子查詢能夠用join代替
     ⑤、使用exists代替in
     ⑥、避免使用相似select * from查詢
     ⑦、避免以%開頭的like模糊匹配
     ⑧、避免數據類型隱式轉化,如varchar不加單引號會自動轉化爲int型
     ⑨、聯合索引,須要知足最左匹配原則,如聯合索引col1,col2,col3,則索引生效的狀況包括col1,col和col2,col1和col2和col3,相似col2和col3這種則索引失效。
數據庫

相關文章
相關標籤/搜索