日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

认识mysql总结_从根上理解Mysql - 读后个人总结1-搜云库

發布時間:2023/12/9 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 认识mysql总结_从根上理解Mysql - 读后个人总结1-搜云库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

初識 MySQL

通信介紹

MySQL 也是典型的 C / S 模型,分為客戶端及服務端,服務端一般部署在遠端服務器中,也可以部署至本地,然后客戶端跟服務端通信則可以使用依賴網絡的 TCP 長連接或 Unix-like 的系統下可以使用 Socket文件的形式通信

連接階段

客戶端跟服務器端通信,MySQL 服務器會維護為每個客戶端請求建立一個線程專門處理請求

連接可以通過 SSL 保證傳輸安全性,實際情況一般都是通過 SSL 訪問跳板機再通過內網地址訪問到 MySQL 服務器

MySQL 服務器也會通過用戶名,密碼,主機信息來做認證,判斷是否提供對應權限的服務

查詢緩存階段

MySQL 服務器為提供查詢效率,所以加入了全局緩存,當緩存命中時可以直接返回結果。但是實際兩個請求只要有任何字符上的不一樣,都會導致緩存不能命中,同時對于讀寫相差不多或寫多讀少的表,每次寫操作都會導致緩存失效造成不必要的開銷,所以在 MySQL 5.7+ 版本中該功能以及被廢棄,MySQL 8.0+ 版本中被移除

語法解析階段

如果緩存沒有命中,MySQL 服務接下去就會開始解析 SQL 語句,如果有語法錯誤則直接返回至客戶端,沒有問題則會將 SQL 語句轉換為 MySQL 內部的數據結構(解析樹)

查詢優化

語法解析之后,MySQL 服務器已經知道客戶端想如何去獲取數據,接下來服務器會對語句的執行進行優化,例如外連接轉換為內連接,表達式簡化,子查詢轉換為連接之類的,這部分優化不會對查詢結果有影響,類似于數學上的因式分解,但是執行效率更高。完成優化后,生成的結果就是執行計劃,這時根據執行計劃就可以知道該從哪個表,使用哪個索引,查詢哪些數據等所有的具體操作。

我們可以使用 EXPLAIN 語句查詢某個 SQL 的執行計劃,然后對 SQL 進行優化

存儲引擎

當擁有執行計劃后,MySQL 服務接下去就要真正的去持久化的區域,將數據取出來交給客戶端,這里為了能支持各種各樣的持久化策略,MySQL 對下層的所有控制都依賴于統一的存儲引擎 API,然后不同的存儲引擎提供各自的具體實現

不同的存儲引擎,目標場景不同,實現方式與特性也不同,可以根據實際場景進行選擇,場景的存儲引擎如下:

存儲引擎

描述

ARCHIVE

用于數據存檔 (行插入后不能再被修改)

CSV

在存儲數據時,以逗號分隔各個數據項

InnoDB

具備外鍵功能的事務存儲引擎

MERGE

用來管理多個 MyISAM 表構成的表集合

NDB

MySQL 集群專用存儲引擎

BLACKHOLE

丟棄寫操作,讀操作會返回空內容

FEDERATED

用來遠程訪問表

MEMORY

置于內存的表

MyISAM

主要的非事務處理存儲引擎

數據庫可以配置一個默認的存儲引擎,而每個表還可以單獨指定一個不同的存儲引擎,例如:

MySQL 調控

MySQL 服務器正常運行,會有非常多的配置參數,并且這些參數是支持根據實際場景進行修改的,主要有 **啟動選項 ** 和 配置文件 的方式

啟動選項

常規在命令行下使用一個命令,為了讓這個命令根據用戶不同的需求產生不能的行為,都會傳遞一個這個命令支持的選項參數,然后命令解析到這個參數后,就會按固定的行為來工作

比如 ls 表示將當前目錄下的文件信息都展示出來,而 ls -l 通過傳遞一個 -l 的選項,表示修改展示的內容及方式,這種類似的操作就是傳遞啟動選項,MySQL 服務器在啟動時也支持大量的啟動選項

啟動選項一般包含長形式和短形式,比如 MySQL 服務器配置監聽主機名的選項,長形式就是 –host,而短形式就是 -h,他們的作用是相同的,相當于短地址數量有限,所有只有一些常用的選項有短形式

注意:選項名區分大小寫,所以 -p 與 -P 完全不一樣,而短形式指定選項時,可以跟空格,也可以不跟(-p有些特殊,-p和密碼值之間是不能用空格的),所以 -P 3306 和 -P3306 是一樣的

配置文件

啟動選項僅針對單次啟動生效,也就是不會將配置進行持久化,而配置文件是持久化到本地的,所以不需要每次啟動時都輸入,所以非常方便

Unix like 操作系統下,默認 MySQL 服務器會從以下路徑來尋找配置文件:

路徑

備注

/etc/my.cnf

/etc/mysql/my.cnf

SYSCONFDIR/my.cnf

$MYSQL_HOME/my.cnf

特定于服務器的選項

defaults-extra-file

命令行指定的額外配置文件路徑

~/.my.cnf

用戶特定選項

~/.mylogin.cnf

用戶特定的登錄路徑選項(僅限客戶端)

說明:

1、 SYSCONFDIR 表示在使用 CMake 構建時使用 SYSCONFDIR 選項指定的目錄,通常情況下,默認配置是編譯安裝目錄下的 etc 目錄

2、 MYSQL_HOME 是自定義的環境變量,可配可不配,僅代表可以自定義放置配置文件的路徑

3、 ~ 表示跟當前登錄用戶相關,也就是根據用戶不同的配置方式,放置到每個用戶自己的目錄下

4、 defaults-extra-file 表示在啟動 MySQL 服務是,指定的編譯文件的目錄,例如:

`mysqld --defaults-extra-file=/tmp/my.cnf` 這樣啟動,則會訪問 /tmp/my.cnf 這個路徑下的配置文件

配置文件的內容

配置文件的啟動選項被分為若干個組,每個組有個組名,用中括號包裹

對應到啟動選項中,配置的這兩個選項的使用方式應該類似于:

mysqld --option1 --option2=value2

其次是分組的適用范圍:

1、 server 分組表示所有 MySQL 服務器程序都會讀取使用

2、 client 分組表示所有 MySQL 客戶端程序都會讀取使用

3、 mysqld 命令啟動 MySQL 服務器程序會讀取 [mysqld],[server]

4、 mysqld_safe 命令啟動 MySQL 服務器程序會讀取 [mysqld],[server],[mysqld_safe]

5、 mysql.server 命令啟動 MySQL 服務器程序會讀取 [mysqld],[server],[mysql.server]

6、 mysql 命令啟動客戶端程序會讀取 [mysql],[client]

7、 mysqladmin 命令啟動客戶端程序會讀取 [mysqladmin],[client]

8、 mysqldump 命令啟動客戶端程序會讀取 [mysqldump ],[client]

注意:同一個配置文件中,多個組都修改了同一個選項,并且這幾個組都能被讀取,則按從上到下的順序進行讀取,也就是最后一個配置會覆蓋之前的配置項

系統變量

除了監聽的端口ip等參數以外,MySQL 服務還有大量的系統變量,能影響 MySQL 服務程序的行為,跟之前的區別在于,這些系統變量除了配置文件和啟動選項能修改外,還支持通過 SQL 動態的更改

例如 default_storage_engine 表示 MySQL 服務默認的儲存引擎,max-connections 表示 MySQL 服務默認的儲存引擎,通過啟動選項的方式配置如下:

通過配置文件的方式配置參考如下:

而通過 SQL 語句配置參考如下:

變量作用范圍

與一般編程語言相似,MySQL 的系統系統變量也有作用范圍的說法,不過不是全局和局部,而是全局跟用戶,如果是 GLOBAL 下修改了這個參數,則對所有 MySQL 用戶而言,都以最新的參數進行工作,而在 SESSION 下修改了這個參數,則僅對當前的 MySQL 用戶生效

另外,不是所有的系統變量都有兩種作用范圍的,比如 max-connections 只具有 GLOBAL 的作用范圍,而 insert_id 只具有 SESSION 的作用范圍,像 version 這種變量更為特殊,屬于只讀的系統變量,不可更改

系統變量跟啟動選項的區別

啟動選項是程序啟動時傳遞的參數,而系統變量是程序在運行時,控制程序行為的變量,關系如下:

大部分的系統變量都可以通過啟動選項的方式進行配置

部分系統變量是程序自動生成,不可通過啟動選項的方式進行配置,例如:auto_increment_offset

部分啟動選項也不是系統變量,例如:defaults-file

狀態變量

為了更好的了解 MySQL 服務的運行狀況,服務提供了大量的關于運行狀態的變量,稱為狀態變量。例如:Threads_connected 表示當前已經連接的數量

狀態變量用于顯示服務器的狀態信息,他們的值只能由 MySQL 服務程序自己維護,而不能手動配置

總結

以上是生活随笔為你收集整理的认识mysql总结_从根上理解Mysql - 读后个人总结1-搜云库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。