真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySql入門--基礎(chǔ)知識

一、MySQL物理文件組成

成都創(chuàng)新互聯(lián)自2013年起,先為祁東等服務(wù)建站,祁東等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為祁東企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

(一)日志文件

1、錯誤日志:Error Log

錯誤日志記錄了MyQL Server運行過程中所有較為嚴(yán)重的警告和錯誤信息,以及MySQLServer每次啟動和關(guān)閉的詳細(xì)信息。在默認(rèn)情況下,系統(tǒng)記錄錯誤日志的功能是關(guān)閉的,錯誤信息被輸出到標(biāo)準(zhǔn)錯誤輸出(stderr),如果要開啟系統(tǒng)記錄錯誤日志的功能,需要在啟動時開啟-log-error選項。錯誤日志的默認(rèn)存放位置在數(shù)據(jù)目錄下,以hostname.err命名。但是可以使用命令:--log-error[=file_name],修改其存放目錄和文件名。

為了方便維護需要,有時候會希望將錯誤日志中的內(nèi)容做備份并重新開始記錄,這時候就可以利用MySQL的FLUSH LOGS命令來告訴MySQL備份舊日志文件并生成新的日志文件。備份文件名以“.old”結(jié)尾。

 

2、二進制日志:Binary Log & Binary Log Index

二進制日志,也就是我們常說的binlog,也是MySQL Server中最為重要的日志之一。當(dāng)我們通過“--log-bin[=file_name]”打開了記錄的功能之后,MySQL會將所有修改數(shù)據(jù)庫數(shù)據(jù)的query以二進制形式記錄到日志文件中。當(dāng)然,日志中并不僅限于query語句這么簡單,還包括每一條query所執(zhí)行的時間,所消耗的資源,以及相關(guān)的事務(wù)信息,所以binlog是事務(wù)安全的。

和錯誤日志一樣,binlog記錄功能同樣需要“--log-bin[=file_name]”參數(shù)的顯式指定才能開啟,如果未指定file_name,則會在數(shù)據(jù)目錄下記錄為mysql-bin.******(*代表0~9之間的某一個數(shù)字,來表示該日志的序號)。

binlog還有其他一些附加選項參數(shù):

“--max_binlog_size”設(shè)置binlog的最大存儲上限,當(dāng)日志達(dá)到該上限時,MySQL會重新創(chuàng)建一個日志開始繼續(xù)記錄。不過偶爾也有超出該設(shè)置的binlog產(chǎn)生,一般都是因為在即將達(dá)到上限時,產(chǎn)生了一個較大的事務(wù),為了保證事務(wù)安全,MySQL不會將同一個事務(wù)分開記錄到兩個binlog中。

“--binlog-do-db=db_name”參數(shù)明確告訴MySQL,需要對某個(db_name)數(shù)據(jù)庫記錄binlog,如果有了“--binlog-do-db=db_name”參數(shù)的顯式指定,MySQL會忽略針對其他數(shù)據(jù)庫執(zhí)行的query,而僅僅記錄針對指定數(shù)據(jù)庫執(zhí)行的query。

“--binlog-ignore-db=db_name”與“--binlog-do-db=db_name”完全相反,它顯式指定忽略某個(db_name)數(shù)據(jù)庫的binlog記錄,當(dāng)指定了這個參數(shù)之后,MySQL會記錄指定數(shù)據(jù)庫以外所有的數(shù)據(jù)庫的binlog。

“--binlog-ignore-db=db_name”與“--binlog-do-db=db_name”兩個參數(shù)有一個共同的概念需要大家理解清楚,參數(shù)中的db_name不是指query語句更新的數(shù)據(jù)所在的數(shù)據(jù)庫,而是執(zhí)行query的時候當(dāng)前所處的數(shù)據(jù)庫。不論更新哪個數(shù)據(jù)庫的數(shù)據(jù),MySQL僅僅比較當(dāng)前連接所處的數(shù)據(jù)庫(通過use db_name切換后所在的數(shù)據(jù)庫)與參數(shù)設(shè)置的數(shù)據(jù)庫名,而不會分析query語句所更新數(shù)據(jù)所在的數(shù)據(jù)庫。

mysql-bin.index文件(binary log index)的功能是記錄所有Binary Log的絕對路徑,保證MySQL各種線程能夠順利的根據(jù)它找到所有需要的Binary Log文件。

 

3、更新日志:update log

更新日志是MySQL在較老的版本上使用的,其功能和binlog基本類似,只不過不是以二進制格式來記錄而是以簡單的文本格式記錄內(nèi)容。自從MySQL增加了binlog功能之后,就很少使用更新日志了。從版本5.0開始,MySQL已經(jīng)不再支持更新日志了。

 

4、查詢?nèi)罩荆簈uery log

查詢?nèi)罩居涗汳ySQL中所有的query,通過“--log[=fina_name]”來打開該功能。由于記錄了所有的query,包括所有的select,體積比較大,開啟后對性能也有較大的影響,所以請大家慎用該功能。一般只用于跟蹤某些特殊的sql性能問題才會短暫打開該功能。默認(rèn)的查詢?nèi)罩疚募麨閔ostname.log。

 

5、慢查詢?nèi)罩荆簊low query log

顧名思義,慢查詢?nèi)罩局杏涗浀氖菆?zhí)行時間較長的query,也就是我們常說的slowquery,通過設(shè)--log-slow-queries[=file_name]來打開該功能并設(shè)置記錄位置和文件名,默認(rèn)文件名為hostname-slow.log,默認(rèn)目錄也是數(shù)據(jù)目錄。

慢查詢?nèi)罩静捎玫氖呛唵蔚奈谋靖袷?,可以通過各種文本編輯器查看其中的內(nèi)容。其中記錄了語句執(zhí)行的時刻,執(zhí)行所消耗的時間,執(zhí)行用戶,連接主機等相關(guān)信息。MySQL還提供了專門用來分析滿查詢?nèi)罩镜墓ぞ叱绦騧ysqlslowdump,用來幫助數(shù)據(jù)庫管理人員解決可能存在的性能問題。

 

6、Innodb的在線redo日志:innodb redo log

Innodb是一個事務(wù)安全的存儲引擎,其事務(wù)安全性主要就是通過在線redo日志和記錄在表空間中的undo信息來保證的。redo日志中記錄了Innodb所做的所有物理變更和事務(wù)信息,通過redo日志和undo信息,Innodb保證了在任何情況下的事務(wù)安全性。Innodb的redo日志同樣默認(rèn)存放在數(shù)據(jù)目錄下,可以通過innodb_log_group_home_dir來更改設(shè)置日志的存放位置,通過innodb_log_files_in_group設(shè)置日志的數(shù)量。

 

(二)數(shù)據(jù)文件

在MySQL中每一個數(shù)據(jù)庫都會在定義好(或者默認(rèn))的數(shù)據(jù)目錄下存在一個以數(shù)據(jù)庫名字命名的文件夾,用來存放該數(shù)據(jù)庫中各種表數(shù)據(jù)文件。不同的MySQL存儲引擎有各自不同的數(shù)據(jù)文件,存放位置也有區(qū)別。多數(shù)存儲引擎的數(shù)據(jù)文件都存放在和MyISAM數(shù)據(jù)文件位置相同的目錄下,但是每個數(shù)據(jù)文件的擴展名卻各不一樣。如MyISAM用“.MYD”作為擴展名,Innodb用“.ibd”,Archive用“.arc”,CSV用“.csv”,等等。

1、“.frm”文件

與表相關(guān)的元數(shù)據(jù)(meta)信息都存放在“.frm”文件中,包括表結(jié)構(gòu)的定義信息等。不論是什么存儲引擎,每一個表都會有一個以表名命名的“.frm”文件。所有的“.frm”文件都存放在所屬數(shù)據(jù)庫的文件夾下面。

2、“.MYD”文件

 “.MYD”文件是MyISAM存儲引擎專用,存放MyISAM表的數(shù)據(jù)。每一個MyISAM表都會有一個“.MYD”文件與之對應(yīng),同樣存放于所屬數(shù)據(jù)庫的文件夾下,和“.frm”文件在一起。

3、“.MYI”文件

“.MYI”文件也是專屬于MyISAM存儲引擎的,主要存放MyISAM表的索引相關(guān)信息。對于MyISAM存儲來說,可以被cache的內(nèi)容主要就是來源于“.MYI”文件中。每一個MyISAM表對應(yīng)一個“.MYI”文件,存放于位置和“.frm”以及“.MYD”一樣。

4、“.ibd”文件和ibdata文件

這兩種文件都是存放Innodb數(shù)據(jù)的文件,之所以有兩種文件來存放Innodb的數(shù)據(jù)(包括索引),是因為Innodb的數(shù)據(jù)存儲方式能夠通過配置來決定是使用共享表空間存放存儲數(shù)據(jù),還是獨享表空間存放存儲數(shù)據(jù)。獨享表空間存儲方式使用“.ibd”文件來存放數(shù)據(jù),且每個表一個“.ibd”文件,文件存放在和MyISAM數(shù)據(jù)相同的位置。如果選用共享存儲表空間來存放數(shù)據(jù),則會使用ibdata文件來存放,所有表共同使用一個(或者多個,可自行配置)ibdata文件。ibdata文件可以通過innodb_data_home_dir和innodb_data_file_path兩個參數(shù)共同配置組成, innodb_data_home_dir配置數(shù)據(jù)存放的總目錄, 而innodb_data_file_path配置每一個文件的名稱。當(dāng)然, 也可以不配置innodb_data_home_dir而直接在innodb_data_file_path參數(shù)配置的時候使用絕對路徑來完成配置。innodb_data_file_path中可以一次配置多個ibdata文件。文件可以是指定大小,也可以是自動擴展的,但是Innodb限制了僅僅只有最后一個ibdata文件能夠配置成自動擴展類型。當(dāng)我們需要添加新的ibdata文件的時候,只能添加在innodb_data_file_path配置的最后,而且必須重啟MySQL才能完成ibdata的添加工作。不過如果我們使用獨享表空間存儲方式的話,就不會有這樣的問題,但是如果要使用裸設(shè)備的話,每個表一個裸設(shè)備,可能造成裸設(shè)備數(shù)量非常大,而且不太容易控制大小,實現(xiàn)比較困難,而共享表空間卻不會有這個問題,容易控制裸設(shè)備數(shù)量。我個人還是更傾向于使用獨享表空間存儲方式。當(dāng)然,兩種方式各有利弊,看大家各自應(yīng)用環(huán)境的側(cè)重點在那里了。

上面僅僅介紹了兩種最常用存儲引擎的數(shù)據(jù)文件,此外其他各種存儲引擎都有各自的數(shù)據(jù)文件,讀者朋友可以自行創(chuàng)建某個存儲引擎的表做一個簡單的測試,做更多的了解。

 

(三)Replication相關(guān)文件:

1、master.info文件:

master.info文件存在于Slave端的數(shù)據(jù)目錄下,里面存放了該Slave的Master端的相關(guān)信息,包括Master的主機地址,連接用戶,連接密碼,連接端口,當(dāng)前日志位置,已經(jīng)讀取到的日志位置等信息。

2、relay log和relay log index

mysql-relay-bin.xxxxxn文件用于存放Slave端的I/O線程從Master端所讀取到的Binary Log信息,然后由Slave端的SQL線程從該relay log中讀取并解析相應(yīng)的日志信息,轉(zhuǎn)化成Master所執(zhí)行的SQL語句,然后在Slave端應(yīng)用。

mysql-relay-bin.index文件的功能類似于mysql-bin.index,同樣是記錄日志的存放位置的絕對路徑,只不過他所記錄的不是Binary Log,而是Relay Log。

3、relay-log.info文件:

類似于master.info,它存放通過Slave的I/O線程寫入到本地的relay log的相關(guān)信息。供Slave端的SQL線程以及某些管理操作隨時能夠獲取當(dāng)前復(fù)制的相關(guān)信息。

2.1.4其他文件:

1、system config file

MySQL的系統(tǒng)配置文件一般都是“my.cnf”,Unix/Linux下默認(rèn)存放在"/etc"目錄下,Windows環(huán)境一般存放在“c:/windows”目錄下面?!癿y.cnf”文件中包含多種參數(shù)選項組(group),每一種參數(shù)組都通過中括號給定了固定的組名,如“[mysqld]”組中包括了mysqld服務(wù)啟動時候的初始化參數(shù),“[client]”組中包含著客戶端工具程序可以讀取的參數(shù),此外還有其他針對于各個客戶端軟件的特定參數(shù)組,如mysql程序使用的“[mysql]”,mysqlchk使用的“[mysqlchk]”,等等。如果讀者朋友自己編寫了某個客戶端程序,也可以自己設(shè)定一個參數(shù)組名,將相關(guān)參數(shù)配置在里面,然后調(diào)用mysql客戶端api程序中的參數(shù)讀取api讀取相關(guān)參數(shù)。

2、pid file

pid file是mysqld應(yīng)用程序在Unix/Linux環(huán)境下的一個進程文件,和許多其他Unix/Linux服務(wù)端程序一樣,存放著自己的進程id。

3、socket file

socket文件也是在Unix/Linux環(huán)境下才有的,用戶在Unix/Linux環(huán)境下客戶端連接可以不通過TCP/IP網(wǎng)絡(luò)而直接使用Unix Socket來連接MySQL。

 

二、User、schema、database概念

In MySQL:

·         server instance == not identified with catalog, just a set of databases

·         database == schema == catalog == a namespace within the server.

·         user == named account, who is can connect to server and use (but can not own - no concept of ownership) objects in one or more databases

·         to identify any object you need (database name + object name)

In Oracle:

·         server instance == database == catalog == all data managed by same execution engine

·         schema == namespace within database, identical to user account

·         user == schema owner == named account, identical to schema, who can connect to database, who owns the schema and use objects possibly in other schemas

·         to identify any object you need (schema name + object name)

 

三、MySQL默認(rèn)數(shù)據(jù)庫mysql、information_schema等

l  mysql

數(shù)據(jù)庫mysql:這個是mysql的核心數(shù)據(jù)庫,主要負(fù)責(zé)存儲數(shù)據(jù)庫的用戶、權(quán)限設(shè)置、關(guān)鍵字等mysql自己需要使用的控制和管理信息。不可以刪除,如果對mysql不是很了解,也不要輕易修改這個數(shù)據(jù)庫里面的表信息。

l  information_schema

information_schema數(shù)據(jù)庫是MySQL自帶的,它提供了訪問數(shù)據(jù)庫元數(shù)據(jù)的方式。什么是元數(shù)據(jù)呢?元數(shù)據(jù)是關(guān)于數(shù)據(jù)的數(shù)據(jù),如數(shù)據(jù)庫名或表名,列的數(shù)據(jù)類型,或訪問權(quán)限等。有些時候用于表述該信息的其他術(shù)語包括“數(shù)據(jù)詞典”和“系統(tǒng)目錄”。

在 MySQL中,把 information_schema看作是一個數(shù)據(jù)庫,確切說是信息數(shù)據(jù)庫。其中保存著關(guān)于MySQL服務(wù)器所維護的所有其他數(shù)據(jù)庫的信息。如數(shù)據(jù)庫名,數(shù)據(jù)庫的表,表欄的數(shù)據(jù)類型與訪問權(quán)限等。在INFORMATION_SCHEMA中,有數(shù)個只讀表。它們實際上是視圖,而不是基本表,因此,你將無法看到與之相關(guān)的任何文件。

l  performance_schema

MySQL 5.5新增一個存儲引擎:命名PERFORMANCE_SCHEMA ,主要用于收集數(shù)據(jù)庫服務(wù)器性能參數(shù)。MySQL用戶是不能創(chuàng)建存儲引擎為PERFORMANCE_SCHEMA的表

performance_schema提供以下功能:

1.提供進程等待的詳細(xì)信息,包括鎖、互斥變量、文件信息;

2.保存歷史的事件匯總信息,為提供MySQL服務(wù)器性能做出詳細(xì)的判斷;

3.對于新增和刪除監(jiān)控事件點都非常容易,并可以隨意改變mysql服務(wù)器的監(jiān)控周期,例如(CYCLE、MICROSECOND)

通過以上得到的信息,DBA能夠較明細(xì)得了解性能降低可能是由于哪些瓶頸?

Performance的開啟很簡單,在my.cnf中[mysqld]加入performanc_schema,檢查性能數(shù)據(jù)庫是否啟動的命令:

SHOW VARIABLES LIKE ‘performance_schema’;

若是返回的 值為ON,則說明性能數(shù)據(jù)庫正常開啟狀態(tài)。


網(wǎng)頁題目:MySql入門--基礎(chǔ)知識
標(biāo)題網(wǎng)址:http://weahome.cn/article/jgeopp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部