溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL有哪些入門知識

發(fā)布時間:2020-06-04 15:22:52 來源:網(wǎng)絡(luò) 閱讀:168 作者:三月 欄目:MySQL數(shù)據(jù)庫

不知道大家之前對類似MySQL有哪些入門知識的文章有無了解,今天我在這里給大家再簡單的講講。感興趣的話就一起來看看正文部分吧,相信看完MySQL有哪些入門知識你一定會有所收獲的。                                                           

1、mysql簡介
	優(yōu)勢
		簡單易用:MySQL 是一個高性能且相對簡單的數(shù)據(jù)庫系統(tǒng),與一些更大系統(tǒng)的設(shè)置和管理相比,其復(fù)雜程度較低。
		價(jià)格:MySQL 對多數(shù)個人用戶來說是免費(fèi)的。
		小巧:安裝包占用的磁盤空間小
		支持查詢語言:MySQL 可以利用 SQL(結(jié)構(gòu)化查詢語言),SQL 是一種所有現(xiàn)代數(shù)據(jù)庫系統(tǒng)都選用的語言。也可以利用支持 ODBC(開放式數(shù)據(jù)庫連接)的應(yīng)用程序,ODBC 是 Microsoft 開發(fā)的一種數(shù)據(jù)庫通信協(xié)議。
		性能:許多客戶機(jī)可同時連接到云服務(wù)器。MySQL數(shù)據(jù)庫沒有用戶數(shù)的限制,多個客戶機(jī)可同時使用同一個數(shù)據(jù)庫??衫脦讉€輸入查詢并查看結(jié)果的界面來交互 式地訪問 MySQL。這些界面為:命令行客戶機(jī)程序、Web 瀏覽器或 X Window System 客戶機(jī)程序。此外,還有由各種語言(如C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl)編寫的界面。因此,可以選擇使用已編好的客戶機(jī)程序或編寫自己的客戶機(jī)應(yīng)用程序。
		連接性和安全性:MySQL 是完全網(wǎng)絡(luò)化的,其數(shù)據(jù)庫可在因特網(wǎng)上的任何地方訪問,因此,可以和任何地方的任何人共享數(shù)據(jù)庫。而且 MySQL 還能進(jìn)行訪問控制,可以控制哪些人不能看到您的數(shù)據(jù)。
		可移植性:MySQL 可運(yùn)行在各種版本的 UNIX 以及其他非 UNIX 的系統(tǒng)(如 Windows 和 OS/2)上。MySQL 可運(yùn)行在從家用 PC 到高級的服務(wù)器上。
		開放式的分發(fā):MySQL 容易獲得;只要使用 Web 瀏覽器即可。如果不能理解某樣?xùn)|西是如何起作用的,或者對某個算法感到好奇,可以將其源代碼取來,對源代碼進(jìn)行分析。如果不喜歡某些東西,則可以更改它。
		速度:MySQL 運(yùn)行速度很快。開發(fā)者聲稱 MySQL 可能是目前能得到的最快的數(shù)據(jù)庫。
	適用場景
		web網(wǎng)站系統(tǒng)
		日志倉庫系統(tǒng)
		數(shù)據(jù)倉庫系統(tǒng)
2、mysql5.7版本特性
	支持systemd
	更好的性能:對于多核心CPU、固態(tài)硬盤、鎖有更好的優(yōu)化
	更好的innodb存儲引擎
	更好的復(fù)制功能
3、mysql鎖的概念
	1、分類
		表級鎖:開銷小,加鎖快;不會出現(xiàn)死鎖;鎖定粒度大,發(fā)生鎖沖突的概率最高,并發(fā)度最低;MyISAM,MEMORY,CSV
		行級鎖:開銷大,加鎖慢;會出現(xiàn)死鎖;鎖定粒度最小,發(fā)生鎖沖突的概率最低,并發(fā)度也最高;InnoDB
		頁面鎖:開銷和加鎖時間界于表鎖和行鎖之間;會出現(xiàn)死鎖;鎖定粒度界于表鎖和行鎖之間,并發(fā)度一般;BerkeleyDB
	2、死鎖
		產(chǎn)生原因:	
			互斥條件:資源是獨(dú)占的且排他使用,進(jìn)程互斥使用資源,即任意時刻一個資源只能給一個進(jìn)程使用,其他進(jìn)程若申請一個資源,而該資源被另一進(jìn)程占有時,則申請者等待直到資源被占有者釋放。
			不可剝奪條件:進(jìn)程所獲得的資源在未使用完畢之前,不被其他進(jìn)程強(qiáng)行剝奪,而只能由獲得該資源的進(jìn)程資源釋放。
			請求和保持條件:進(jìn)程每次申請它所需要的一部分資源,在申請新的資源的同時,繼續(xù)占用已分配到的資源。
			循環(huán)等待條件:在發(fā)生死鎖時必然存在一個進(jìn)程等待隊(duì)列{P1,P2,…,Pn},其中P1等待P2占有的資源,P2等待P3占有的資源,…,Pn等待P1占有的資源,形成一個進(jìn)程等待環(huán)路,環(huán)路中每一個進(jìn)程所占有的資源同時被另一個申請,也就是前一個進(jìn)程占有后一個進(jìn)程所深情地資源。
		解決方法:(原則:通過破壞死鎖產(chǎn)生的4個必要條件來預(yù)防死鎖)
			破壞不可剝奪條件:一個進(jìn)程不能獲得所需要的全部資源時便處于等待狀態(tài),等待期間他占有的資源將被隱式的釋放重新加入到系統(tǒng)的資源列表中,可以被其他的進(jìn)程使用,而等待的進(jìn)程只有重新獲得自己原有的資源以及新申請的資源才可以重新啟動,執(zhí)行。
			破壞請求與保持條件:第一種方法靜態(tài)分配即每個進(jìn)程在開始執(zhí)行時就申請他所需要的全部資源。第二種是動態(tài)分配即每個進(jìn)程在申請所需要的資源時他本身不占用系統(tǒng)資源。
			破壞循環(huán)等待條件:采用資源有序分配其基本思想是將系統(tǒng)中的所有資源順序編號,將緊缺的,稀少的采用較大的編號,在申請資源時必須按照編號的順序進(jìn)行,一個進(jìn)程只有獲得較小編號的進(jìn)程才能申請較大編號的進(jìn)程。
4、mysql文件
	mysql日志文件
		1、分類
			錯誤日志(error log)
			二進(jìn)制日志(binary log)
			事務(wù)日志(repo log)
			慢查詢?nèi)罩荆╯low log)
			查詢?nèi)罩荆╭uery log)
		2、詳解
			錯誤日志:
				my.cnf:
					log-error:
						云服務(wù)器啟動和關(guān)閉產(chǎn)生的信息、云服務(wù)器運(yùn)行中的錯誤、事件調(diào)度器運(yùn)行一個事件產(chǎn)生的信息、在從服務(wù)器上啟動服務(wù)器進(jìn)程產(chǎn)生的信息
					log-warnings:警告信息
				刷新錯誤日志:
					mv host_name.err host_name.err-old
					mysqladmin flush-logs
					mv host_name.err-old backup-directory
			二進(jìn)制日志:
				my.cnf:
					log-bin:打開二進(jìn)制日志,并設(shè)置位置
					max_binlog_size:設(shè)置binlog最大存儲上限,單位為M
					binlog-do-db:指定記錄哪個庫的binlog,忽略其他的
					binlog-ignore-db:指定不記錄哪個庫的binlog
					mysql-bin.index:用于記錄binlog的路徑的文件
					binlog_cache_size:默認(rèn)32768,一個事務(wù)沒提交的時候產(chǎn)生的日志緩存,建議2M到4M。如果大的事務(wù)較多時,應(yīng)適當(dāng)提高該值的大小
					binlog_stmt_cache_size:當(dāng)非事務(wù)語句使用二進(jìn)制日志緩存,超出該值會使用一個臨時文件來存儲
					binlog-format:{row|SQL|mixed}三種方式,分別對應(yīng)主從復(fù)制的三種方式
					sync_binlog:設(shè)定多久同步一次二進(jìn)制日志到硬盤,0表示不同步
					expire_log_days:設(shè)置日志的過期時間
				查看二進(jìn)制日志:
					show binary logs;
					show master status;
				更新二進(jìn)制日志:
					flush logs;
					重啟mysql數(shù)據(jù)庫
				查看某一個二進(jìn)制日志:
					show binlog events\G;
					show binlog events in 'mysql-bin.000001'\G;
					show binlog events in 'mysql-bin.000001' from 727\G;
					mysqlbinlog mysql-bin.000001
				刪除二進(jìn)制日志:
					purge binary logs to 'mysql-bin.000010'(刪除000010之前的所有)
					purge binary logs before '2016-08-29 20:30:00';(刪除這個時間之前的)
					reset master;(全刪,慎用)
			事務(wù)日志:
				特點(diǎn):
					innodb特有的日志,可以提高事務(wù)的效率。
					使用事務(wù)日志,存儲引擎在修改數(shù)據(jù)時只需要修改其內(nèi)存拷貝,在把修改持久化到事務(wù)日志,而不是每次修改都直接持久化修改的數(shù)據(jù)。
					如果,數(shù)據(jù)還沒有持久化,系統(tǒng)崩潰,但是事務(wù)日志已經(jīng)持久化;在重啟后可根據(jù)事務(wù)日志進(jìn)行回復(fù)
				查看當(dāng)前存儲引擎:
					show engines;
				查看默認(rèn)的存儲引擎:
					show variables like '%storage_engine%';
				查看事務(wù)日志定義:
					show global variables like '%log%';
				my.cnf文件:
					innodb_flush_log_at_timeout=1
					innodb_flush_log_at_trx_commit=1
						1:每次事務(wù)提交都會寫事務(wù)日志,并寫數(shù)據(jù);安全性最高,性能最差
						2:每次事務(wù)提交會寫事務(wù)日志,每秒定時寫數(shù)據(jù);安全性和性能中
						0:每秒定時寫事務(wù)日志和數(shù)據(jù);安全性最差,性能最高
			慢查詢?nèi)罩荆?
				my.cnf文件:
					slow_query_log=1
					slow_qurey_log_file=/usr/local/mysql/data/mysql.slow
					long_query_time=1	:查詢時長,默認(rèn)10s,超過則記日志
					slow_launch_time=1
				設(shè)置:
					set global slow_query_log=1		:開啟慢查詢
					set session long_query_time=1s		:設(shè)置慢查詢時間
					或者 set global long_query_time=1s		:全局下設(shè)置				
				查看慢查詢:
					show variables like '%slow%';
					show variables like 'long%';
				分析工具:
					mysqldumpslow mysql.slow
		3、補(bǔ)充:
			查看系統(tǒng)設(shè)置/運(yùn)行狀態(tài):
				show global|session variables like %%
				show global|session status like %%
			修改數(shù)據(jù)庫系統(tǒng)配置:
				修改my.cnf文件
				set global binlog_cache_size = 1048576;
			查看mysql版本:
				mysql -V
				status;
				select version();
	mysql數(shù)據(jù)文件
		1、innodb數(shù)據(jù)文件
			test.ibd:獨(dú)占數(shù)據(jù)文件
				特點(diǎn):方便單表在數(shù)據(jù)庫中的移動,空間可回收,性能稍微強(qiáng)于共享表空間
			test.ibdata:共享表空間數(shù)據(jù)文件
				特點(diǎn):管理方便,但容易產(chǎn)生空間空隙,對統(tǒng)計(jì)分析、日值系統(tǒng)這類應(yīng)用不適用
			test.frm:元數(shù)據(jù)文件
		2、MyISAM
			test.MYI:存儲表的索引的文件
			test.MYD:存儲表的真實(shí)數(shù)據(jù)的文件
			test.frm:元數(shù)據(jù)文件
	replication文件(備份文件,存于slave端)
		1、master.info
			存放master的信息的文件
		2、relay log
			中繼日志
		3、relay log index
			用于記錄relay log的絕對路徑 
		4、relay-log.info
			用于存放I/O線程寫入到本地的relay log的信息
	其他文件
		1、系統(tǒng)配置文件
			/etc/my.cnf文件
				[client]
					客戶端連接時可讀取的文件
				[mysqld]
					mysqld的初始化時的參數(shù)
		2、pid file
			pid存放文件,可在my.cnf中定義
		3、socket file
			unix socket文件存放位置
5、mysql引擎
	1、存儲引擎
		分類:
			innodb
			MyISAM
			NDB Cluster
				主要用于分布式集群中
			Maria
				MyISAM的升級版
			Falcon
				由MySQL開發(fā)為了替代innodb的存儲引擎
			Memory
				存儲數(shù)據(jù)和索引在內(nèi)存,保存元數(shù)據(jù)在磁盤,追求高性能
			Archive
				僅支持insert、select語句,會對數(shù)據(jù)進(jìn)行壓縮
	2、MySQL常用引擎詳解
		MyISAM
			特點(diǎn):
				支持三種類型的索引:b-tree、r-tree、Full-text(全文)
				它是5.1之前的默認(rèn)存儲引擎
				不支持事務(wù)
				只支持表級鎖
			數(shù)據(jù)存放方式:
				靜態(tài)(fixed)
				動態(tài)(dynamic)
				可變長壓縮(compressed)
			統(tǒng)計(jì)數(shù)據(jù)大小方法:
				先統(tǒng)計(jì)一行的長度
				再統(tǒng)計(jì)每個表有多少條數(shù)據(jù)
				最后所有表相加得出庫的數(shù)據(jù)大小
				然后除以1024*1024得出為多少M(fèi)的數(shù)據(jù),在除以1024也就多少G的數(shù)據(jù)
		innodb
			特點(diǎn):
				支持事務(wù)
				行級鎖
				外鍵引用
				數(shù)據(jù)和索引在同一個文件存放
				可使用獨(dú)占表空間或共享表空間
		innodb和MyISAM對比:
			1、innodb支持事務(wù),且默認(rèn)開啟自動提交
			2、innodb支持行級鎖,MyISAM使用表級鎖。MyISAM的讀鎖和寫鎖互斥,不適用于大量讀寫并存的情況
			3、innodb支持外鍵
			4、innodb不支持全文索引
6、mysql命令工具
	1、mysql命令
		提供接口管理MySQL數(shù)據(jù)庫
			-u:指定用戶
			-p:指定密碼
			-h:指定主機(jī)地址,主機(jī)名
			-e:接要執(zhí)行的sql語句,常用于腳本編寫,關(guān)閉交互
			--prompt="\\u@\\h:\\d\\r:\\m:\\s>":建議使用,會出現(xiàn)你當(dāng)前所處的環(huán)境
	2、mysqladmin命令
		管理相關(guān)的功能的命令
			mysqladmin -uroot -p123456 -h localhost ping
				檢測主機(jī)存活
			mysqladmin status 
				查看mysql的基本狀態(tài)
					uptime:運(yùn)行的時間
					threads:活躍的進(jìn)程數(shù)
					questions:查詢次數(shù)
					slow queries:慢查詢次數(shù)
					opens:打開的數(shù)據(jù)表的數(shù)量
					flush tables:執(zhí)行的flush、refresh、reload次數(shù)
					queries per second avg:平均查詢時間
					memory in use:分配的內(nèi)存(編譯時加--with-debug參數(shù))
					max memory used:分配的最大內(nèi)存(編譯時加--with-debug參數(shù))
	3、mysqldump
		mysql備份工具,可將mysql的sql語句dump成為文本
	4、mysqlbinlog
		分析mysql的binlog的作用
	5、mysql的show命令
		show databases;
		show tables;
		show table status from DB like TABLE;
		show columns from TABLE like DB;
		show index from TABLE;
		show variables;
		show processlist;
		show grant for USER;
	6、mysqlslap
		性能測試工具,可生成圖表
7、mysql的系統(tǒng)數(shù)據(jù)庫
	1、INFORMAtION_SCHEMA
		存儲了數(shù)據(jù)庫的元數(shù)據(jù)信息
			TABLES表:提供數(shù)據(jù)庫中表和視圖的信息
			COLUMNS表:表中的列的信息
			TABLE_CONSTRAINTS表:存儲主鍵約束、外鍵約束、唯一約束、check約束等
			STATISTICS:索引信息
	2、PERFORMANCE__SCHEMA
		存儲了提供數(shù)據(jù)庫性能優(yōu)化的參考信息
	3、MYSQL庫
		存儲用戶的權(quán)限和幫助信息
	4、sys庫
		存儲過程、自定義函數(shù)、視圖的存儲,結(jié)合了INFORMAtION_SCHEMA和PERFORMANCE__SCHEMA的信息		

看完MySQL有哪些入門知識這篇文章,大家覺得怎么樣?如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI