目錄
MySQL簡(jiǎn)介
MySQL特性
MySQL體系結(jié)構(gòu)
SQL的四個(gè)層次:
連接層:
SQL層:
插件式存儲(chǔ)引擎:
物理文件層:
一條SQL語(yǔ)句的執(zhí)行流程:
MySQL在Linux中的安裝、部署
首先需要下載mysql軟件包:
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-524000.html
MySQL簡(jiǎn)介
MySQL是一個(gè)小型關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)者為瑞典MySQL AB公司。在2008年1月16號(hào)被sun公司10億美金收購(gòu)。2009年,SUN又被Oracle以74億美金收購(gòu)。
目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于體積小、速度快、總體擁有成本低,尤其是開(kāi)放源代碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。
MySQL特性
1、使用c和c++編寫,并使用了多種編譯器進(jìn)行測(cè)試,保證源代碼的可移植性。(運(yùn)行效率高(更靠近底層))
2、支持多種操作系統(tǒng)
3、為多種編程語(yǔ)言提供了API。
4、支持多線程、充分利用CPU資源,支持多用戶
5、優(yōu)化SQL查詢算法,有效的提高查詢速度。
6、可以作為一個(gè)單獨(dú)的應(yīng)用程序在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也可以作為一個(gè)庫(kù)嵌入到其他的額軟件中
7、提供多語(yǔ)言支持
8、提示TCP/IP、ODBC和IDBC等多種數(shù)據(jù)庫(kù)連接途徑
9、提供用于管理、檢測(cè)、優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具
10、可以處理?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)
MySQL體系結(jié)構(gòu)
Mysql是由SQL接口、解析器、優(yōu)化器、緩存、存儲(chǔ)引擎組成的;
Connectors:不同語(yǔ)言中與不同SQL的交互
Managemen Serveices & Utilities:系統(tǒng)管理和控制工具
Connection?Pool:連接池,管理緩沖用戶連接,線程處理等需要緩存的需求
SQL?Interface:SQL接口,接收用戶的SQL命令,并且返回用戶需要查詢的結(jié)果
Parser:解析器,SQL命令傳遞到解析器的時(shí)候會(huì)被解析器驗(yàn)證和解析
Optimizer:查詢優(yōu)化器,SQL語(yǔ)句在查詢之前會(huì)使用查詢優(yōu)化器對(duì)查詢進(jìn)行優(yōu)化
Cache和Buffer:查詢緩存,如果查詢緩存有命中的查詢結(jié)果,查詢語(yǔ)句就可以直接去查詢緩存中取數(shù)據(jù)
Engine:存儲(chǔ)引擎,存儲(chǔ)引擎是Mysql中具體與文件打交道的子系統(tǒng)
SQL的四個(gè)層次:
連接層:
思想:為了解決資源的頻繁分配、釋放造成的問(wèn)題,為數(shù)據(jù)庫(kù)建立一個(gè)緩沖池。
原理:預(yù)先在緩沖池放入一定數(shù)量的連接,當(dāng)需要數(shù)據(jù)庫(kù)連接時(shí),只需要從“緩沖池”當(dāng)中取出一個(gè),使用完畢后再放回去。
作用:進(jìn)行身份驗(yàn)證、線程重用、連接限制、檢查內(nèi)存,數(shù)據(jù)的緩存;管理用戶的連接,線程處理等需要緩存的需求
SQL層:
管理服務(wù)和工具組件:從備份和恢復(fù)的安全性、復(fù)制、集群、管理、配置、遷移和元數(shù)據(jù)等方面管理數(shù)據(jù)庫(kù)
sql接口組件:進(jìn)行DML、DDL、存儲(chǔ)過(guò)程、視圖、觸發(fā)器等操作和管理;用戶SQL命令接口
解析器組件:驗(yàn)證和解析SQL命令
查詢優(yōu)化器組件對(duì)SQL語(yǔ)句查詢進(jìn)行優(yōu)化、“選取、投影和連接”
緩存和緩沖區(qū):由一系列小緩存組成的,比如表緩存,記錄緩存,key緩存,權(quán)限緩存等
插件式存儲(chǔ)引擎:
存儲(chǔ)引擎:Mysql的存儲(chǔ)引擎是插件式的,它根據(jù)Mysql?AB公司提供的文件訪問(wèn)層的一個(gè)抽象接口來(lái)定制的一種訪問(wèn)機(jī)制,這種訪問(wèn)機(jī)制被稱為存儲(chǔ)引擎;
MYISAM
查詢速度快,由較好的索引優(yōu)化和數(shù)據(jù)壓縮技術(shù),但是不支持事物
InnoDB
它支持事務(wù),并且提供行級(jí)的鎖定,應(yīng)用很廣泛(默認(rèn)的模式)
BDB:不再?gòu)牡讓又С諦DB
Memory:適合存儲(chǔ)臨時(shí)數(shù)據(jù)
Archive:適合存儲(chǔ)歷史數(shù)據(jù)
物理文件層:
支持的文件類型:EXT3、4、NTFS、NFS
文件內(nèi)容:數(shù)據(jù)文件、日志文件、配置文件、其他文件
一條SQL語(yǔ)句的執(zhí)行流程:
連接層:
(1)提供連接協(xié)議:TCP/IP、SOCKET
(2)提供驗(yàn)證:用戶、密碼、IP、SOCKET
(3)提供專用連接線程:接收用戶SQL,返回結(jié)果
可以使用這條語(yǔ)句查看連接線程基本情況:
mysql> show processlist;
SQL層:
(1)接收上層傳送的SQL語(yǔ)句
(2)語(yǔ)法驗(yàn)證模塊:驗(yàn)證語(yǔ)句語(yǔ)法,是否滿足SQL_MOOE
(3)語(yǔ)義檢測(cè):判斷SQL語(yǔ)句的類型
- ???DDL :數(shù)據(jù)定義語(yǔ)言
- ???DCL :數(shù)據(jù)控制語(yǔ)言
- ???DML :數(shù)據(jù)操作語(yǔ)言
- ???DQL: 數(shù)據(jù)查詢語(yǔ)言
(4)權(quán)限檢查:用戶對(duì)庫(kù)表有沒(méi)有權(quán)限
(5)解析器:對(duì)語(yǔ)句執(zhí)行前,進(jìn)行預(yù)先處理,生成解析樹(shù)(執(zhí)行計(jì)劃),即生成多種執(zhí)行方案
(6)優(yōu)化器:根據(jù)解析器得出的多種執(zhí)行計(jì)劃,進(jìn)行判斷,選擇最優(yōu)的執(zhí)行計(jì)劃
代價(jià)模型:資源的耗損平庫(kù)性能的好壞
(7)執(zhí)行器:根據(jù)最優(yōu)執(zhí)行計(jì)劃,執(zhí)行SQL語(yǔ)句,產(chǎn)生執(zhí)行結(jié)果
(8)提供查詢緩存(默認(rèn)關(guān)閉),會(huì)使用redisrair替代查詢緩存功能
(9)提供日志記錄(日志管理章節(jié)):binlog,默認(rèn)是沒(méi)有開(kāi)啟的
存儲(chǔ)引擎層:(類似于Linux中的文件系統(tǒng))
負(fù)責(zé)根據(jù)SQL層執(zhí)行的結(jié)果,從磁盤上拿數(shù)據(jù)
將16進(jìn)制的磁盤數(shù)據(jù),交由SQL結(jié)構(gòu)化化成表
連接層的專用線程返回給用戶。
MySQL在Linux中的安裝、部署
使用倉(cāng)庫(kù)的方式安裝
無(wú)論是使用哪種方式進(jìn)行安裝首先我們需要去獲取mysql的安裝包:
mysql官網(wǎng):www.mysql.com
首先需要下載mysql軟件包:
1、進(jìn)入MySQL官網(wǎng)
2、進(jìn)入MySQL社區(qū)版下載
3、使用yum方式下載MySQL
4、下載對(duì)應(yīng)版本的軟件包
5、這里可以不登錄直接下載軟件包
6、復(fù)制下載鏈接
7、然后進(jìn)入到linux命令行中使用命令下載該軟件包:
rpm -i https://repo.mysql.com//mysql80-community-release-el9-1.noarch.rpm
警告:/var/tmp/rpm-tmp.soD57S: 頭V4 RSA/SHA256 Signature, 密鑰 ID 3a79bd29: NOKEY
8、然后安裝mysql-server
yum install my-server -y
9、這里可以查看一下所有的mysql軟件包:
rpm -aq | grep mysql?
注意:如果顯示為7個(gè)軟件包就正確
10、啟動(dòng)mysql服務(wù)
systemctl?start?mysqld
11、查看該服務(wù)的狀態(tài)
systemctl statsus mysqld
?
這里顯示服務(wù)正常運(yùn)行就表示sql服務(wù)已經(jīng)成功啟動(dòng)了
如果上面一些正常我們就可以正常使用mysql了?
12、注意在輸入之前我們可以查詢一下默認(rèn)的登錄mysql的密碼:
sudo grep 'temporary password' /var/log/mysqld.log
2023-07-05T13:57:47.521864Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: iOMZ>nuaf9oq(最后這里就是默認(rèn)密碼)
這條命令的結(jié)果會(huì)顯示默認(rèn)密碼,下一步會(huì)使用
13、這時(shí)候就可以嘗試登錄MySQL了
mysql -u root -p
Enter password: (這里需要輸入密碼就輸入剛才查找到的默認(rèn)密碼)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 8.0.33 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
13、然后我們就可以正常的進(jìn)入sql了,但是當(dāng)我們嘗試想要查看一下數(shù)據(jù)庫(kù)時(shí)卻會(huì)報(bào)錯(cuò)
因?yàn)槲覀冃枰薷拿艽a:
ALTER USER 'root'@'localhost' IDENTIFIED BY '修改后的密碼';
注意:這里的密碼必須包含字母大小寫+數(shù)字+特殊字符
14、這時(shí)候我們就可以正常的查詢到數(shù)據(jù)庫(kù)了
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.15 sec)
mysql>
到這里數(shù)據(jù)庫(kù)的安裝就完成了,我們可以快樂(lè)的使用MySQL了!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-524000.html
?
到了這里,關(guān)于初識(shí)MySQL:了解MySQL特性、體系結(jié)構(gòu)以及在Linux中部署MySQL的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!