mysql可以只看書麼 mysql看書隨記(1)

2021-10-19 19:17:20 字數 2640 閱讀 2756

存在資料中以 authentication_string 替代 password

連線mysql

1 tcp/ip

遠端連線 mysql -h(host) -u (user) -p

2 命名管道和共享記憶體

windows中

3 unix域套接字

非網路協議

socket中尋找套接字檔案路徑(socket = /usr/……/mysql.sock)

mysql -u(user) -p(password) -s -/usr/……/mysql.sock

innodb儲存引擎

概述特點:第乙個完整支援acid事物的mysql儲存引擎

原子性整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被

回滾(rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。

一致性乙個事務可以封裝狀態改變(除非它是乙個唯讀的)。事務必須始終保持系統處於一致的狀態,不管在任何給定的時間

併發事務有多少。

也就是說:如果事務是

併發多個,系統也必須如同序列事務一樣操作。其主要特徵是保護性和不變性(preserving an invariant),以轉賬

案例為例,假設有五個賬戶,每個賬戶餘額是100元,那麼五個賬戶總額是500元,如果在這個5個賬戶之間同時發生多個轉賬,無論

併發多少個,比如在a與b賬戶之間轉賬5元,在c與d賬戶之間轉賬10元,在b與e之間轉賬15元,五個賬戶總額也應該還是500元,這就是保護性和不變性。

隔離性隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,執行在相同的時間內,執行相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。這種屬性有時稱為

序列化,為了防止事務操作間的混淆,必須序列化或序列化請求,使得在同一時間僅有乙個請求用於同一資料。

永續性在事務完成以後,該事務對資料庫所作的更改便持久的儲存在資料庫之中,並不會被回滾。

由於一項操作通常會包含許多子操作,而這些子操作可能會因為硬體的損壞或其他因素產生問題,要正確實現acid並不容易。acid建議資料庫將所有需要更新以及修改的資料一次操作完畢,但實際上並不可行。

目前主要有兩種方式實現acid:第一種是write ahead logging,也就是日誌式的方式(現代資料庫均基於這種方式)。第二種是shadow paging。

相對於wal(write ahead logging)技術,shadow paging技術實現起來比較簡單,消除了寫日誌記錄的開銷恢復的速度也快(不需要redo和undo)。shadow paging的缺點就是事務提交時要輸出多個塊,這使得提交的開銷很大,而且以塊為單位,很難應用到允許多個事務併發執行的情況——這是它致命的缺點。

wal 的中心思想是對資料檔案 的修改(它們是表和索引的載體)必須是只能發生在這些修改已經 記錄了日誌之後 -- 也就是說,在日誌記錄沖刷到永久儲存器之後. 如果我們遵循這個過程,那麼我們就不需要在每次事務提交的時候 都把資料頁沖刷到磁碟,因為我們知道在出現崩潰的情況下, 我們可以用日誌來恢復資料庫:任何尚未附加到資料頁的記錄 都將先從日誌記錄中重做(這叫向前滾動恢復,也叫做 redo) 然後那些未提交的事務做的修改將被從資料頁中刪除 (這叫向後滾動恢復 - undo)。

行鎖設計,支援mvcc,提供一致性非鎖定讀

被設計用來最有效地利用記憶體和cpu

體系架構

後台執行緒:

重新整理資料,保證緩衝池中是最新的資料,將已修改資料重新整理到磁碟檔案,保證資料庫發生異常後innodb能恢復正常執行狀態

預設情況下:4個io thread 、1個master thread、1個鎖(lock)監控執行緒、1個錯誤監控執行緒

根據自己的虛擬機器,採用show engine innodb status\g 語句進行查詢,得出下圖,因為innodb plugin版本增加了預設的read thread和write thread

記憶體:緩衝池(buffer pool) 重做日誌緩衝池(redo log buffer) 額外的緩衝池(additional memory pool)

由配置檔案中innodb_buffer_pool_size和innodb_log_buffer_size的大小決定

buffer pool size 表明了由多少個緩衝幀(buffer frame),每個緩衝幀為16k,上圖中則分配了8192*16/1024=128m的記憶體的緩衝池

free buffer表示當前空閒的緩衝幀

database pages表示已使用的緩衝幀

modified db pages表示髒頁的數量

並非當前狀態,從上圖可知為51s前的狀態

自學python要看書嗎 python可以自學嗎

python又名蟒蛇語言,由guido van rossum於1989年底發明。python語法簡潔清晰,具有豐富和強大的類庫。它常被稱為膠水語言,有極其簡單的語法,因極易上手而備受歡迎。python開發自學可以掌握嗎?python可以自學嗎 python可以自學,在自學python之前我們需要注意...

mysql只同步單獨庫 Mysql只同步某些庫

只能同步bbp庫 replicate do db bbp 如果要同步多個庫,則需要指定多個replicate do db,如同步bbp和lmis庫 replicate do db bbp replicate do db lmis 只同步某些庫,會涉及跨庫操作無法同步的問題 1 在其它庫中或者沒有選擇...

mysql分使用者麼 MySQL分析使用者消費行為

背景 針對cdnow 上的使用者購買cd明細,使用mysql分析使用者消費行為。字段 四個字段使用者id user id 購買日期 order dt 購買數量 order products 購買金額 order amount 操作步驟 在mysql中新建資料庫,並匯入資料 create table ...