標籤:memory server 資料庫 mysql 線上
mysql server系統架構
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/98/9C/wKiom1k-nWaxKBCNAAIcOwbR-vs445.png" title="圖片1.png" alt="wKiom1k-nWaxKBCNAAIcOwbR-vs445.png" />
邏輯模組組成:
mysql邏輯模組可以分為兩層架構,第一層是sql layer主要包括許可權判斷、sql解析、執行計畫最佳化、query cache的處理等;第二層是儲存引擎層storageengine layer,是底層資料存取操作實現部分,由多種儲存引擎共同組成。
mysql儲存引擎:
儲存引擎是在mysql安裝時就必須和mysql一起被編譯安裝了,mysql ab在架構改造的時候,讓儲存引擎和sqllayer各自更為獨立、耦合更小、可以做到線上載入新的儲存引擎,而不影響mysql的正常運行。外掛程式式儲存引擎的架構,為儲存引擎載入和移動更靈活方便,也使自行開發儲存體引擎更為方便簡單。主要外掛程式式儲存引擎包括mylsam、lnnodb、ndb cluster、maria、falcon、memory、archive等
mylsam儲存引擎簡介:
1、mysql5.1之前默儲存引擎
2、mylsam儲存引擎的表在資料庫中,每個表被存放為三個以表命名的物理檔案:.frm .MYI .MYD每個表都有這樣的三個檔案作為儲存類型的表的儲存,不管這個表有多少引擎,都存放在同一個.MYI中
3.mylsam支援的三種類型索引:B-Tree索引、R-Tree索引、Full-text索引
4.不支援事務及只有表鎖
5.如過mysqld正在寫入該表時被kill掉、主機宕機、磁碟硬體故障、mylsam儲存引擎的bug都會造成表破壞
6.mylsam的資料存放分為靜態固定長度、動態可變長度、壓縮三種格式
建立資料庫建立一個表估算出規劃多大的空間
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/98/9C/wKiom1k-nXSzKDt5AAAbOTNiq78801.png" title="圖片2.png" alt="wKiom1k-nXSzKDt5AAAbOTNiq78801.png" />
查看qq的表的結構
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/98/9C/wKioL1k-nYDxR4-ZAAAsysGTu_U172.png" title="圖片3.png" alt="wKioL1k-nYDxR4-ZAAAsysGTu_U172.png" />
每個位元組相加等於168位元組,如果每天增加10000條記錄,大約需要10000x168/1024/1024=1.6MB
如果發現某個mylsam表出現問題,可以線上通過check table命令效驗
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/98/9C/wKioL1k-nYqB-wpmAAAPkjTkcc8993.png" title="圖片4.png" alt="wKioL1k-nYqB-wpmAAAPkjTkcc8993.png" />
lnnodb儲存引擎簡介:
lnnodb能那麼火,主要是在於功能方面較多特點:支援事務、鎖定機制的改進、實現外鍵、完全由使用者定義表的單獨存放和所有表存放在一起。
lnnodb的物理結構分為兩個部分:
1.資料檔案:
存放資料表中的資料和所有的索引資料,包括主鍵和其他普通索引。
2.記錄檔:
lnnodb的記錄檔和oracle的redo日誌比較相似,同樣可以設定多個日誌組(最少2個),同樣採用輪循策略來順序寫入
mylsam和lnnodb的區別:
1.mylsam不支援事務,而lnnodb支援事務,lnnodb的autocommit預設開啟,即每條sql語句會預設封裝成一個事務,自動認可這樣會影響提交速度,最好是把多條sql語句顯示在begin和commit之間,組成事務提交。
查看提交模式是否開啟
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/98/9C/wKioL1k-nZehJ0dPAAAT78IWPNU786.png" title="圖片5.png" alt="wKioL1k-nZehJ0dPAAAT78IWPNU786.png" />
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/98/9C/wKiom1k-naKjCSn6AAAc9sawlGE653.png" title="圖片6.png" alt="wKiom1k-naKjCSn6AAAc9sawlGE653.png" />
2、InnoDB支援資料行鎖定,MyISAM不支援行鎖定,只支援鎖定整個表。
3、InnoDB支援外鍵,MyISAM不支援。
4、InnoDB不支援全文索引,而MyISAM支援。
mysqlslap效能測試mysql二種儲存引擎
mysqlslap是mysql內建的基準測試載入器,優點:查詢資料、使用靈活
查看mysql資料庫預設最大的串連數
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/98/9C/wKiom1k-neij5OmWAAANQbmTBrA209.png" title="圖片7.png" alt="wKiom1k-neij5OmWAAANQbmTBrA209.png" />
查看預設使用的引擎
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/98/9C/wKiom1k-nfLSYzYQAABC-YG6DbE472.png" title="圖片8.png" alt="wKiom1k-nfLSYzYQAABC-YG6DbE472.png" />
使用sql指令碼測試 下面的壓力測試數超出了預設數所以報錯
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/98/9C/wKiom1k-nf7DQvfCAAAcpyTRJe4188.png" title="圖片9.png" alt="wKiom1k-nf7DQvfCAAAcpyTRJe4188.png" />
修改壓力測試數並測試最大值為30,60超過就會出錯 註:多次測試
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/98/9C/wKioL1k-ngvT68SgAADED9ZVwRE010.png" title="圖片10.png" alt="wKioL1k-ngvT68SgAADED9ZVwRE010.png" />
MySQL內建工具使用介紹
mysql命名:使用最多的一個命名工具,為使用者提供命令列介面來管理mysql伺服器
文法格式:mysql [options] [database] 可以使用mysql --help查看使用協助資訊
營運時常用的mysql命令相關參數
使用-e參數查看資料庫
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/98/9C/wKioL1k-nhWStNzIAAAVY-1rAtw295.png" title="圖片11.png" alt="wKioL1k-nhWStNzIAAAVY-1rAtw295.png" />
通過使用指令碼建立資料庫、表,對錶進行增、改、刪、查操作
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/98/9C/wKiom1k-niHzb1r7AACVgeZLuG4858.png" title="圖片12.png" alt="wKiom1k-niHzb1r7AACVgeZLuG4858.png" />
使用root使用者進入mysql給test使用者授權
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/98/9C/wKioL1k-ni7wkzYWAAAKuMjMohw289.png" title="圖片13.png" alt="wKioL1k-ni7wkzYWAAAKuMjMohw289.png" />
然後給指令碼授予執行許可權
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/98/9C/wKiom1k-njmxxQ7aAAAEBFZfXTY438.png" title="圖片14.png" alt="wKiom1k-njmxxQ7aAAAEBFZfXTY438.png" />
啟動指令碼
使用提示符登入mysql查看效果
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/98/9C/wKioL1k-nmrgLpmYAABTyN2LRUU028.png" title="圖片15.png" alt="wKioL1k-nmrgLpmYAABTyN2LRUU028.png" />
使用tee產生一個檔案;這個檔案包含此資料庫中所有的操作都儲存到這個目錄裡面
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/98/9C/wKioL1k-nnrSVmS4AAAFNxwQYXU745.png" title="圖片16.png" alt="wKioL1k-nnrSVmS4AAAFNxwQYXU745.png" />
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/98/9C/wKioL1k-noSC2-MeAAAztED0mMI677.png" title="圖片17.png" alt="wKioL1k-noSC2-MeAAAztED0mMI677.png" />
使用ping命令測試是否能正常提供服務
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/98/9C/wKioL1k-n-iQfllHAAAgcY60JBo107.png" title="圖片18.png" alt="wKioL1k-n-iQfllHAAAgcY60JBo107.png" />
使用status命令擷取當前mysql server的幾個基本的狀態值
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/98/9C/wKiom1k-n9vg6koIAAAVj2UaHCU914.png" title="圖片19.png" alt="wKiom1k-n9vg6koIAAAVj2UaHCU914.png" />
使用processlist擷取當前資料庫的連接線程資訊
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/98/9C/wKiom1k-n8_zR-9wAAAoBhOmxzo887.png" title="圖片20.png" alt="wKiom1k-n8_zR-9wAAAoBhOmxzo887.png" />
編寫mysql監控指令碼
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/98/9C/wKioL1k-n8XiyhkHAAA4TjuimMc246.png" title="圖片21.png" alt="wKioL1k-n8XiyhkHAAA4TjuimMc246.png" />
查看執行的效果 並且給指令碼執行許可權chmod +x 指令碼名
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/98/9C/wKiom1k-n7fCI1akAAB5qhnR1fo284.png" title="圖片22.png" alt="wKiom1k-n7fCI1akAAB5qhnR1fo284.png" />
查看資料字典,此資料庫包含了其他所有資料庫的中繼資料,包括資料類型、存取權限
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/98/9C/wKiom1k-n6zzNmkJAABMZIz8Cm0044.png" title="圖片23.png" alt="wKiom1k-n6zzNmkJAABMZIz8Cm0044.png" />
本文出自 “centos7” 部落格,請務必保留此出處http://12832314.blog.51cto.com/12822314/1934710
mysql server-儲存引擎