事務
事務就是一組sql陳述句,為了保證一組資料庫操作,要么全部成功,要么全部失敗,
事務是在引擎層實作的,也就是說并不是所有引擎都可以使用事務,MyISAM 就不支持事務,這也是為什么會被 InnoDB 取代的原因,
事務的特性 acid
-
原子性
事務要么全部執行成功,要么全部執行失敗,在事務提交(commit)成功之后,所有的操作都生效,提交失敗,所有的操作都會回滾,
-
隔離性
A 事務對資料庫做的變更,在事務未提交之間,資料庫中也看不到,B 事務中也看不到, -
一致性
在事務執行的程序中,只要事務未提交,就不會改變資料庫的狀態,提交之后事務已完成,此時資料庫狀態發生變化, -
持久性
事務一旦提交,對資料庫的變更就會持久化到磁盤,即使資料庫發生例外重啟,資料也不會丟失,
隔離級別
- 讀未提交
- 讀已提交
- 可重復讀(MySQL默認)
- 串行化
索引
-
普通索引:純為了加速查詢,可為空,可以重復值
-
主鍵索引:不可為空,不可以重復值
-
唯一索引:索引列的值必須唯一,允許空值
-
全文索引:用來查找文本中的關鍵字,而不是與索引中的值相比較
日志
1. 錯誤日志
默認打開,無法關閉;記錄mysql服務的啟停,以及中間出現的錯誤資訊
2. 普通查詢日志
默認不開啟;記錄了mysql運行的所有操作,無論是否成功
3. 二進制日志
默認不開啟;記錄資料庫變化的情況,可以使用二進制日志洗掉的資料進行還原
使用mysqlbinlog命令來查看MySQL二進制日志
4. 慢查詢日志
記錄沒有使用索引的查詢陳述句,只記錄成功的案例
.
主從復制 讀寫分離 還原備份
-
主從復制原理
首先需要兩個及兩個以上的MySQL服務器,分為主服務器和從服務器, 從服務器開啟一個io執行緒到主服務器來獲取二進制日志,主服務器開啟一個dump執行緒來接待從服務器, 當從服務器將二進制檔案取回去之后,開啟一個sql執行緒來讀取二進制日志,做到實時備份主服務器的資料 -
讀寫分離
主資料庫處理事務性查詢,主資料庫寫入資料 從資料庫處理select查詢,從資料庫讀出資料 -
還原備份
冷備和熱備 冷備:停止MySQL服務后,去備份資料 熱備:在mysql服務運行的情況下去備份資料;mysqldump\SQLyog等工具 備份的方法 完全備份 增量備份 差異備份 子主題 4 備份方案 1、每天全備(最省事,最消耗系統資源) 2、全備+增量 3、全備+差異 備份:mysqldump(mysqldump是熱備、全備機制) 案例: 備份庫: mysqldump -uusername -p'password' --databases databasename>/mysql/backup/...sql 備份表:mysqldump -uusername -p'password' databasename tablename>/mysql/backup/...sql 還原:mysql 案例: mysql -uusername -p'password' </mysql/backup/...sql mysqlbinlog 時間點 位置號
innodb存盤引擎
-
支持事物
-
支持B+樹
2.1)為什么innodb索引是B+樹資料結構? 因為關系型資料庫這種資料量大的索引能達到億級別,為了減少記憶體的使用索引也會存盤到磁盤上,B+樹的所有的data域在葉子節點, 內部節點相對B樹更小,會將所有的葉子節點用指標串起來,這樣遍歷葉子節點就能通過遍歷獲取全部資料,一次性讀入記憶體的需要查找的關鍵字也就越多,減少了磁盤IO的次數, 但是B樹因為其分支結點同樣存盤著資料,我們要找到具體的資料,需要進行一次中序遍歷按序來掃,所以B+樹更加適合在區間查詢的情況, 2.2)B+樹葉子節點儲存的是什么? 主鍵key 具體資料 比如說user_name是個索引,當執行該SQL:select * from user_info where `user_name` = 'xiaoming'; InnoDB 就會建立 user_name 索引 B+樹,節點里存的是 user_name 這個 KEY,葉子節點存盤的資料的是主鍵 KEY 在執行 select * from user_info where id = 5 這個陳述句時,InnoDB 就會查詢這顆主鍵 ID 索引 B+樹,找到對應的 user_name='Bob', (innodb為了節省資源,只有主鍵索引樹的葉子節點存放了具體資料) -
支持外鍵
-
5.6以上版本支持全文索引
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/272555.html
標籤:其他
上一篇:資料庫概論筆記第一章
下一篇:MySQL基礎(一)
