mysql經常使用存儲引擎之Innodbmysql
系統表空間和獨立表空間要如何選擇sql
比較:數據庫
系統表空間沒法簡單的收縮文件大小安全
獨立表空間能夠經過optimeize table 命令收縮系統文件性能優化
系統表空間會產生IO瓶頸服務器
獨立表空間能夠同時向多個文件刷新數據多線程
錶轉移的步驟併發
把原來存在於系統表空間中的錶轉移到獨立空間中的方法負載均衡
步驟:數據庫設計
1 使用mysqldump導出全部數據表數據
2 中止mysql服務,修改參數,並刪除innodb相關文件
3 重啓mysql服務,重建innodb系統表空間
4 從新導入數據
如何選擇正確的存儲引擎
參考條件
1 事務
2 崩潰恢復
3 備份
4 存儲引擎的特有特性
經常使用的基準測試工具介紹
mysql基準測試工做之 mysqlslap
經常使用參數說明
--auto-generate-sql 又系統自動生成 sql腳本進行測試
--auto-generate-sql-add-autoincrement 在生成的表中增長自增ID
--auto-generate-sql-load-type 指定測試中使用的查詢類型
--auto-generate-sql-write-number 指定初始化數據時生成的數據量
--concurrency 指定併發線程的數量
--engine 指定要測試表的存儲引擎,能夠用逗號分割多個存儲引擎
--no-drop 指定不清理測試數據
--iterations 指定測試運行的次數
--number-of-queries 指定每個線程執行的查詢數量
--debug-info 指定輸出 額外的內存及CPU統計信息
--number-inf-cols 指定測試表中包含的INT類型的數量
--number-char-cols 指定測試表中包含的varchar類型的數量
--create-schema 指定了用於執行測試的數據庫的名字
--query 用於指定自定義SQL的腳本
--only-print 並不運行測試腳本,而是把生成的腳本打印出來
mysql基準測試工做之sysbench
經常使用參數
--test 用於指定所要執行的測試類型,支持如下參數
Fileio 文件系統I/O性能測試
cpu cpu性能測試
memory 內存性能測試
Oltp 測試要指定具體的lua腳本
Lua腳本位於sysbench-0.5/sysbench/tests/db
經常使用參數
--mysql-db 用於指定執行基準測試的數據庫名
--mysql-table-engine 用於指定所使用的存儲引擎
--oltp-tables-count 執行測試的表的數量
--oltp-tables-size 指定每一個表中的數據行數
--num-threads 指定測試的併發線程數量
--max-time 指定最大的測試時間
--report-interval 指定間隔多長時間輸出一次統計信息
--mysql-user 指定執行測試的mysql用戶
--mysql-password 指定執行測試的mysql用戶的密碼
prepare 用於準備測試數據
run 用於實際進行測試
cleanup 用於清理測試數據
數據庫結構優化的目的
減小數據冗餘
儘可能避免數據維護中出現更新,插入和刪除異常
插入異常:若是表中的某個實體隨着另外一個實體而存在
更新異常:若是更改表中的某個實體的單獨屬性時,須要對多行進行更新
刪除異常:若是刪除表中的某一實體則會致使其餘實體的消失
數據庫結構設計的步驟
需求分析:全面瞭解產品設計的存儲需求
邏輯設計:設計數據的邏輯存儲結構
物理設計:根聽說使用的數據庫特色進行表結構設計
維護優化:根據實際狀況對索引,存儲結構等進行優化
數據庫設計範式
數據庫設計的第二範式
要求一個表中只具備一個業務主鍵,也就是說符合第二範式的表中不能存在非主鍵列對只對部分主鍵的依賴關係
數據庫設計的第三範式
指每個非主屬性既不部分依賴於也不傳遞依賴於業務主鍵,也就是在第二範式的基礎上消除了非主屬性對主鍵的傳遞依賴
複製解決了什麼問題
實如今不一樣服務器上的數據分佈
利用二進制日誌增量進行
不須要太多的寬帶
可是使用基於行的複製在進行大批量的更改時會對帶寬帶來必定的壓力
特別是跨IDC環境下進行復制
實現數據讀取的負載均衡
加強了數據安全性
應該分批進行
利用備份的備份來減小主庫負載
複製並不能代替備份
mysql 複製性能優化
影響主從延遲的因素
默認狀況下從只有一個sql線程,主上併發的修改在從上變成了串行
使用多線程複製
如何配置多線程複製
stop slave
set global slave_parallel_type = 'logical_clock';
set global slave_parallel_workers = 4;
start slave ;
mysql 複製常見問題處理
因爲數據損壞或丟失引發的主從複製錯誤
主庫或從庫意外宕機引發的錯誤
主庫上的二進制日誌損壞
經過change master 命令來從新指定
備庫上的中繼日誌損壞
如何實現高可用
避免致使系統不可用的因素,減小系統不可用的時間
創建完善的監控及報警系統
對備份數據進行恢復測試