MySQL數據庫從入門到實戰(一)

第一部分:瞭解DBA體系
1、初級DBA應該掌握哪些技能?(運維人員必會知識)
1.MySQL安裝部署
2.基本參數配置
3.備份策略設計與實現
2、中級DBA應該掌握哪些技能?
1.故障處理能力(備份或者其餘手段)
2.MySQL監控能力
3.基本優化能力(索引、執行計劃、慢日誌分析);有必定的SQL分析能力
4.主從複製的基本管理、應用、故障處理
3、高級DBA應該掌握哪些技能?
1.MySQL性能調優:對總體架構、「業務」、「用戶行爲」深刻了解,要有很紮實的SQL能力
2.高性能、高可用架構:對總體架構、「業務」、「用戶行爲」深刻了解
4、對數據的理解
對現實對象、事件的抽象顯示或存儲方式
數據庫適合存儲什麼數據?
》重要數據
》非二進制的,文本形式的更適合於存放到數據庫中
》有關係,有複雜邏輯的數據
》數據管理複雜的
第二部分:DBMS數據庫管理系統
1、做用:
一、更有條理的存儲和查詢數據
二、提供更高級的數據管理方式(備份、恢復、優化、安全等等)
2、分類:
1.關係型
二維表
典型產品 Oracle傳統企業,MySQL是互聯網企業
數據存取是經過SQL
最大特色,數據安全性方面強(ACID)
2.非關係型(NoSQL)
非關係型數據庫(Not only SQL)
不是否認關係型數據庫,作關係型數據庫的的補充
3.數據庫版本
oracle數據庫版本介紹(目前仍位居第一)
(8.1.7,9.2.0.8 ,10.2.0.4 10.2.0.5,11.2.0.3 11.2.0.4,12.2)
MySQL數據庫版本介紹(開源免費)
(5.6.36 ,5.6.38 ,5.6.34 ,5.7.18,5.7.20)
面試問題總結: 詢問你公司用的mysql版本,爲何用?
行業規範,選擇主流大版本,發佈六個月以上GA版本,咱們公司選擇這款數據庫是基於公司業務特色決定的,開發階段也是用的5.6的版本。(根據本身業務公司狀況來講)
3、補充:
》mariadb(mysql的一個主要分支)存儲引擎TokuDB特色:
1.insert操做比innodb性能高3-4倍
2.數據壓縮比8倍以上
3.查詢性能比innodb好
》企業應用場景:
zabbix(爬蟲類)應用業務類型:(緣由以下)
1.insert插入多
2.數據量大,須要存儲大量數據
》perconaDB(瞭解,有精力可研究)研究它的工具:
xtrabackup (用於優化SQL)mysql

第三部分:MySQL體系結構
一、客戶端、服務器端模型
MySQL是一個典型的C/S結構的模型,客戶端——服務器一種模型。
服務端:mysqld
客戶端:自帶客戶端工具(mysql、mysqldump等),API驅動
1、mysqld構成
(1).鏈接層
說明:
》提供通訊協議
TCP/IP ---全部系統通用
socket ---linux特有
》 驗證用戶的合法性(匹配mysql.user):
用戶@'ip' 密碼
》提供連接線程;隨着客戶端請求派生出專門的響應線程;做用是和客戶端進行交互
查看當前數據庫的鏈接線程數:show full processlist
過程:》接收客戶端發來的SQL》獲得查詢結果以後返回給客戶端結果》向下層(SQL層)傳輸接收到的SQL》後端處理完成的結果負責接收,轉給客戶端。
(2)SQL層
》SQL線程接收上層線程發送過來的SQL語句
》檢查語法是否正確,有誤拋出錯誤提示,還有受權檢測
》檢查語義,語句的類型(DDL、DCL、DML、DQL)
》會將語句交給不一樣解析進行解析
》解析器開始解析,生成執行計劃
》優化器,判斷全部生成的執行計劃,找到成本最低的執行計劃,轉給執行器
》執行器,執行這個執行計劃,得出去哪一個盤找哪一個文件的哪頁哪行數據
》有專門的線程將結果發送給下層(存儲引擎層)繼續處理
》下層傳過來的數據結構化成表的形式,轉給上層鏈接層專門線程
》將上層執行過的SQL語句進行hash,生成一個hash結果(SQL_ID)和獲取數據結果緩存下來(QUERY_CACHE)。
補充:
》企業裏如今主流解決方案關閉QUERY_CACHE,用redis或memcache代替
(3)存儲引擎層
》接收上層傳過來的數據位置,找到相應的頁上的行
》找到行以後,發送給SQL層
2、庫,表,頁,區,段定義
————————————————————————
數據庫的邏輯結構(數據庫對象)
庫:更好的管理一堆表
表:(1)表屬性:表名、表中的列名和列定義、表的存放位置定義。
(2)表真實數據行。
咱們未來,對數據庫的操做,實際上就是對以上的對象進行操做。
+++++++++++++++++++++++++++++++++++++++++
(1)頁(默認16k):mysql的最小物理存儲分配單元。
用來存放數據庫中表中的行
(2)區:mysql認爲對於一行數據來說,若是須要多個頁狀況,咱們儘可能給他連續的才更高效,全部有了區的概念。
(3)多個區構成,咱們認爲,連續的區組成段linux

相關文章
相關標籤/搜索