mysql物理結構:
mysql它是通過檔案系統對資料進行儲存和管理,從物理結構上分為日誌檔案和資料檔案
日誌檔案:
錯誤日誌(err log):
預設是開啟狀態的,如果是5.5.7版本以後的是無法關閉錯誤日誌,錯誤日誌它記錄了執行過程中遇到的所有嚴重的錯誤資訊,以及mysql每次啟動和關閉的詳細資訊。
預設的錯誤日誌名稱:hostname.err
錯誤日誌所記錄的資訊我們可以通過log-error和log-warnings來定義,
其中log-err是定義是否啟用錯誤日誌的功能和錯誤日誌的儲存位置,log-warnings是定義是否將警告資訊也定義至錯誤日誌中。
log_error可以直接定義為檔案路徑,也可以為on|off;log_warings只能使用1|0來定義開關啟動
二進位制日誌(bin log):
預設是關閉狀態,我們需要通過:log-bin=mysql-bin進行開啟,
其中mysql-bin是bin-log日誌檔案的basename,bin-log日誌檔案的預設名稱:mysql-bin-000001.log
bin-log它記錄了資料庫中所有的ddl語句和dml語句,
但不包括select語句內容,語句以事件的形式儲存,描述了資料的變更順序,binlog還包括了每個更新語句的執行時間資訊,binl-og主要作用是用於恢復資料,因此bin-log對於災難恢復和備份恢復來說至關重要。
如果是ddl語句則直接記錄到bin-log日誌,而dml語句必需通過事務提交才能記錄到bin-log日誌中
bin-log還可以用於mysql的主從複製
主從複製原理:
通用查詢日誌(general query log):
預設是關閉的,由於通用查詢日誌會記錄使用者的所有操作,其中還包含增刪查改等資訊,在併發操作大的環境下會產生大量的資訊從而導致不必要的磁碟io,會影響mysql的效能的。如若不是為了除錯資料庫的目的建議不要開啟查詢日誌。
慢查詢日誌(slow query log):
預設是關閉的,需要通過設定:slow_query_log=on進行開啟。
記錄執行時間超過long_query_time秒的所有查詢,便於收集查詢時間比較長的sql語句
mysql索引:
我們使用索引的目的就是在於:優化查詢速度,索引是一種特殊的檔案或者叫資料結構(innodb資料表上的索引是表空間的乙個組成部分),它們包含著對資料表裡所有記錄的引用指標。更通俗的說,資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度。
索引是在儲存引擎中實現的,不同的儲存引擎就會使用不同的索引,預設是使用btree索引,
索引的分類:
單列索引 (常用)
:
普通索引:mysql中基本索引型別,沒有什麼限制,允許在定義索引的列中插入重複值和空值,純粹為了查詢資料更快一點。
唯一索引:索引列中的值必須是唯一的,但是允許為空值,
主鍵索引:是一種特殊的唯一索引,不允許有空值。
組合索引(常用):
在表中的多個字段組合上建立的索引,只有在查詢條件中使用了這些欄位的左邊欄位時,索引才會被使用,使用組合索引時遵循最左字首集合。
全文索引:
全文索引,只有在myisam引擎上才能使用,只能在char,varchar,text型別欄位上使用全文索引。
索引的使用:
建立索引:
1.create
index
索引名 on
表名(列名(長度))
刪除索引:
drop
index
索引名 on
表名
檢視執行計畫:
只需在sql語句前加 explain
索引的儲存結構:
Mysql日誌和索引
mysql 兩階段提交的不同瞬間,mysql 發生異常重啟,是怎麼保證資料完整性的 時刻a binlog沒寫,不會傳到備庫里,redolog未提交,崩潰恢復的時候事務就會回滾 時刻b 如果redo log 已經由commit標識,直接提交。如果只有完整的prepare,則判斷binlog。binlo...
mysql日誌 MySQL日誌設定及檢視方法詳解
我們都很熟悉mysql日誌,本文主要介紹了mysql日誌設定及檢視方法,需要的朋友可以參考下,希望能幫助到大家。mysql有以下幾種日誌 錯誤日誌 log err 查詢日誌 log 慢查詢日誌 log slow queries 更新日誌 log update 二進位制日誌 log bin 預設情況下...
Mysql 索引及優化
索引是什麼?相信大家都用過字典。你是怎麼從厚厚的新華字典中找到你需要找到的那個字的呢?又是怎麼從一本書中快速定位到你需要的章節?我們都是通過書中的目錄,然後根據目錄中的頁碼定位到我們要的資訊。同樣在mysql中也是這樣為我們準備了乙份目錄。當你去通過sql語句查詢的時候用不用索引,以及怎麼用索引。決...