成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MySql(一)——啟動(dòng)選項(xiàng)和系統(tǒng)變量

617035918 / 3410人閱讀

摘要:一啟動(dòng)選項(xiàng)和系統(tǒng)變量啟動(dòng)服務(wù)器程序這個(gè)可執(zhí)行文件就代表著服務(wù)器程序,運(yùn)行這個(gè)可執(zhí)行文件就可以直接啟動(dòng)一個(gè)服務(wù)器進(jìn)程。

MySql(一)——啟動(dòng)選項(xiàng)和系統(tǒng)變量 啟動(dòng)MySql服務(wù)器程序

mysqld

mysqld這個(gè)可執(zhí)行文件就代表著MySql服務(wù)器程序,運(yùn)行這個(gè)可執(zhí)行文件就可以直接啟動(dòng)一個(gè)服務(wù)器進(jìn)程。

mysqld_safe

mysqld_safe是一個(gè)啟動(dòng)腳本,它會(huì)間接的調(diào)用mysql,而且還順便啟動(dòng)了另外一個(gè)監(jiān)控服務(wù),這個(gè)監(jiān)控進(jìn)程在服務(wù)器進(jìn)程掛了的時(shí)候,可以幫助重啟它。另外,使用mysqld_safe啟動(dòng)服務(wù)器程序時(shí),它會(huì)將服務(wù)器程序的出錯(cuò)信息和其他診斷信息重定向到某個(gè)文件中,產(chǎn)生出錯(cuò)誤日志,這樣可以方便我們找出發(fā)生錯(cuò)誤的原因。

mysql.server

mysql.server也是一個(gè)啟動(dòng)腳本,它會(huì)間接的調(diào)用mysql_safe,在調(diào)用mysql.server時(shí)在后邊指定start參數(shù)就可以啟動(dòng)服務(wù)器程序了:

mysql.server start

mysqld_multi

一臺(tái)計(jì)算機(jī)上可以運(yùn)行多個(gè)服務(wù)器實(shí)例。mysqld_multi可以對(duì)每一個(gè)服務(wù)器進(jìn)程的啟動(dòng)或停止進(jìn)行監(jiān)控。

tips:windows下,命令:"完整的可執(zhí)行文件路徑" --install [-manual] [服務(wù)名]可以指定程序注冊(cè)為windows服務(wù)。
啟動(dòng)MySql客戶端程序

mysql -h主機(jī)名 -u用戶名 -p密碼

參數(shù)名 含義
-h 計(jì)算機(jī)的域名或者IP地址
-u 用戶名
-p 密碼
客戶端與服務(wù)器的連接過程
運(yùn)行著的服務(wù)器程序和客戶端程序本質(zhì)上都是計(jì)算機(jī)上的一個(gè)進(jìn)程,所以客戶端進(jìn)程向服務(wù)器進(jìn)程發(fā)送請(qǐng)求并得到回復(fù)的過程本質(zhì)上是一個(gè)進(jìn)程間通信的過程!MySql支持下邊三種客戶端進(jìn)程和服務(wù)器進(jìn)程的通信方式。

TCP/IP

mysqld -P3307,-P可以改變MySql服務(wù)器監(jiān)聽哪個(gè)端口

mysql -p3307-P可以讓客戶端去連接服務(wù)器的指定端口

命名管道和共享內(nèi)存

windows用戶可用

Unix域套接字文件

如果我們的服務(wù)器進(jìn)程和客戶端進(jìn)程都運(yùn)行在同一臺(tái)操作系統(tǒng)為類Unix的機(jī)器上的話,我們可以使用Unix域套接字文件來進(jìn)行進(jìn)程間通信

如果我們?cè)趩?dòng)客戶端程序的時(shí)候指定的主機(jī)名為localhost,或者指定了--protocal=socket的啟動(dòng)參數(shù),那服務(wù)器程序和客戶端程序之間就可以通過Unix域套接字文件來進(jìn)行通信了。MySql服務(wù)器程序默認(rèn)監(jiān)聽的Unix域套接字文件路徑為/tmp/mysql.sock,客戶端程序也默認(rèn)連接到這個(gè)Unix域套接字文件。如果我們想改變這個(gè)默認(rèn)路徑,可以在啟動(dòng)服務(wù)器程序時(shí)指定socket參數(shù)

mysqld --socket=/tmp/a.txt

mysql -hlocalhost -uroot --socket=/tmp/a.txt -p

服務(wù)器處理客戶端請(qǐng)求

其實(shí)不論客戶端進(jìn)程和服務(wù)器進(jìn)程是采用哪種方式進(jìn)行通信,最后實(shí)現(xiàn)的效果都是:客戶端進(jìn)程向服務(wù)器進(jìn)程發(fā)送一段文本(MySQL語句),服務(wù)器進(jìn)程處理后再向客戶端進(jìn)程發(fā)送一段文本(處理結(jié)果)。

大致是以下三個(gè)部分

連接管理:

每當(dāng)有一個(gè)客戶端進(jìn)程連接到服務(wù)器進(jìn)程時(shí),服務(wù)器進(jìn)程都會(huì)創(chuàng)建一個(gè)線程來專門處理與這個(gè)客戶端的交互,當(dāng)該客戶端退出時(shí)會(huì)與服務(wù)器斷開連接,服務(wù)器并不會(huì)立即把與該客戶端交互的線程銷毀掉,而是把它緩存起來,在另一個(gè)新的客戶端再進(jìn)行連接時(shí),把這個(gè)緩存的線程分配給該新客戶端。這樣就起到了不頻繁創(chuàng)建和銷毀線程的效果,從而節(jié)省開銷

解析與優(yōu)化

查詢緩存:如果兩個(gè)查詢請(qǐng)求在任何字符上的不同(例如:空格、注釋、大小寫),都會(huì)導(dǎo)致緩存不會(huì)命中。雖然查詢緩存有時(shí)可以提升系統(tǒng)性能,但也不得不因維護(hù)這塊緩存而造成一些開銷,比如每次都要去查詢緩存中檢索,查詢請(qǐng)求處理完需要更新查詢緩存,維護(hù)該查詢緩存對(duì)應(yīng)的內(nèi)存區(qū)域。從MySQL 5.7.20開始,不推薦使用查詢緩存,并在MySQL 8.0中刪除

語法解析:判斷請(qǐng)求的語法是否正確

查詢優(yōu)化:MySql的優(yōu)化程序會(huì)對(duì)我們的語句做一些優(yōu)化

存儲(chǔ)引擎

blackhole、MyIsam、InnoDB...

關(guān)于存儲(chǔ)引擎的一些操作

SHOW ENGINES;

創(chuàng)建表時(shí)指定存儲(chǔ)引擎:CREATE TABLE 表名( 建表語句; ) ENGINE = 存儲(chǔ)引擎名稱;

修改表的存儲(chǔ)引擎:ALTER TABLE 表名 ENGINE = 存儲(chǔ)引擎名稱;

啟動(dòng)選項(xiàng)和配置文件

在命令行上使用選項(xiàng),格式:

--啟動(dòng)選項(xiàng)1[=值1] --啟動(dòng)選項(xiàng)2[=值2] ... --啟動(dòng)選項(xiàng)n[=值n]

mysqld --skip-networking:客戶端不能用-h(TCP/IP)進(jìn)行網(wǎng)絡(luò)通信

mysqld --default-storage-engine=MyISAM:把默認(rèn)引擎設(shè)置為MyISAM

在命令行中設(shè)置啟動(dòng)選項(xiàng)只對(duì)當(dāng)次啟動(dòng)生效

配置文件中使用選項(xiàng)

Windows操作系統(tǒng)的配置文件

路徑名 備注
%WINDIR%my.ini, %WINDIR%my.cnf WINDIR通常是C:WINDOWS
C:my.ini, C:my.cnf
BASEDIRmy.ini, BASEDIRmy.cnf BASEDIR指的是MySQL安裝目錄的路徑
defaults-extra-file 命令行指定的額外配置文件路徑
%APPDATA%MySQL.mylogin.cnf 登錄路徑選項(xiàng)(僅限客戶端)
列表中最后一個(gè)名為.mylogin.cnf配置文件有點(diǎn)兒特殊,它不是一個(gè)純文本文件(其他的配置文件都是純文本文件),而是使用mysql_config_editor實(shí)用程序創(chuàng)建的加密文件。文件中只能包含一些用于啟動(dòng)客戶端軟件時(shí)連接服務(wù)器的一些選項(xiàng),包括 hostuserpassword、portsocket。而且它只能被客戶端程序所使用。

類Unix操作系統(tǒng)中的配置文件

路徑名 備注
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf CMake構(gòu)建MySQL時(shí)使用SYSCONFDIR選項(xiàng)指定的目錄
$MYSQL_HOME/my.cnf 特定于服務(wù)器的選項(xiàng)(僅限服務(wù)器)
defaults-extra-file 命令行指定的額外配置文件路徑
~/.my.cnf 用戶特定選項(xiàng)
~/.mylogin.cnf 用戶特定的登錄路徑選項(xiàng)(僅限客戶端)

配置文件的內(nèi)容

[server]
option1             #這是option1,該選項(xiàng)不需要選項(xiàng)值
option2 = value2    #這是option2,該選項(xiàng)需要選項(xiàng)值

[mysqld]
(具體的啟動(dòng)選項(xiàng)...)

[mysqld_safe]
(具體的啟動(dòng)選項(xiàng)...)

[client]
(具體的啟動(dòng)選項(xiàng)...)

[mysql]
(具體的啟動(dòng)選項(xiàng)...)

[mysqladmin]
(具體的啟動(dòng)選項(xiàng)...)
如果我們?cè)诙鄠€(gè)配置文件中設(shè)置了相同的啟動(dòng)選項(xiàng),那以最后一個(gè)配置文件中的為準(zhǔn)
啟動(dòng)命令 類別 能讀取的組
mysqld 啟動(dòng)服務(wù)器 [mysqld]、[server]
mysqld_safe 啟動(dòng)服務(wù)器 [mysqld]、[server]、[mysqld_safe]
mysql.server 啟動(dòng)服務(wù)器 [mysqld]、[server]、[mysql.server]
mysql 啟動(dòng)客戶端 [mysql]、[client]
mysqladmin 啟動(dòng)客戶端 [mysqladmin]、[client]
mysqldump 啟動(dòng)客戶端 [mysqldump]、[client]

defaults-file的使用

如果我們不想讓MySql到默認(rèn)的路徑下搜索配置文件(就是上表中列出的那些),可以在命令行指定defaults-file選項(xiàng),比如這樣(以UNIX系統(tǒng)為例):mysqld --defaults-file=/tmp/myconfig.txt。如果文件不存在或無法訪問,則會(huì)發(fā)生錯(cuò)誤。

命令行和配置文件中啟動(dòng)選項(xiàng)的區(qū)別

如果同一個(gè)啟動(dòng)選項(xiàng)既出現(xiàn)在命令行中,又出現(xiàn)在配置文件中,那么以命令行中的啟動(dòng)選項(xiàng)為準(zhǔn)

系統(tǒng)變量

1.系統(tǒng)變量簡介
MySql服務(wù)器程序運(yùn)行過程中會(huì)用到許多影響程序行為的變量

SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];

2.設(shè)置系統(tǒng)變量

通過啟動(dòng)選項(xiàng)設(shè)置:上面說的很具體

服務(wù)器程序運(yùn)行過程中設(shè)置

系統(tǒng)變量比較牛逼的一點(diǎn)就是,對(duì)于大部分系統(tǒng)變量來說,它們的值可以在服務(wù)器程序運(yùn)行過程中進(jìn)行動(dòng)態(tài)修改而無需停止并重啟服務(wù)器

設(shè)置不同作用范圍的系統(tǒng)變量

GLOBAL:全局變量,影響服務(wù)器的整體操作。

SESSION:會(huì)話變量,影響某個(gè)客戶端連接的操作。(注:SESSION有個(gè)別名叫LOCAL

服務(wù)器會(huì)為每個(gè)連接的客戶端維護(hù)一組會(huì)話變量

設(shè)置:

SET [GLOBAL|SESSION] 系統(tǒng)變量名 = 值;

SET GLOBAL default_storage_engine = MyISAM

SET [@@(GLOBAL|SESSION).]var_name = XXX;

SET @@GLOBAL.default_storage_engine = MyISAM

SET default_storage_engine = MyISAM

如果在設(shè)置系統(tǒng)變量的語句中省略了作用范圍,默認(rèn)的作用范圍就是SESSION

如果某個(gè)客戶端改變了某個(gè)系統(tǒng)變量在GLOBAL作用范圍的值,并不會(huì)影響該系統(tǒng)變量在當(dāng)前已經(jīng)連接的客戶端作用范圍為SESSION的值,只會(huì)影響后續(xù)連入的客戶端在作用范圍為SESSION的值。

3.啟動(dòng)選項(xiàng)和系統(tǒng)變量的區(qū)別

- 大部分的系統(tǒng)變量都可以被當(dāng)作啟動(dòng)選項(xiàng)傳入
- 有些系統(tǒng)變量是在程序運(yùn)行過程中自動(dòng)生成的,是不可以當(dāng)作啟動(dòng)選項(xiàng)來設(shè)置,比如`auto_increment_offset`、`character_set_client`
- 有些啟動(dòng)選項(xiàng)也不是系統(tǒng)變量,比如`defaults-file`

4.狀態(tài)變量
為了讓我們更好的了解服務(wù)器程序的運(yùn)行情況,MySQL服務(wù)器程序中維護(hù)了好多關(guān)于程序運(yùn)行狀態(tài)的變量。由于狀態(tài)變量是用來顯示服務(wù)器程序運(yùn)行狀況的,所以它們的值只能由服務(wù)器程序自己來設(shè)置,我們程序員是不能設(shè)置的。如:Threads_connected

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30988.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<