HETF-MySQL 核心技術指導手冊_第1頁
HETF-MySQL 核心技術指導手冊_第2頁
HETF-MySQL 核心技術指導手冊_第3頁
HETF-MySQL 核心技術指導手冊_第4頁
HETF-MySQL 核心技術指導手冊_第5頁
已閱讀5頁,還剩144頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

'BetterILxperience

<HETF>

MySQL核心技術指導手冊

Author:fuqiang

CreationDate:2016-08-03

LastUpdated:

DocumentRef:MySQL核心技術指導手冊

Version:

①etlerExperience

DocRef:

2020-08-25

文檔控制

更改記錄

日期作者版本更改參考

2016-09-11傅強1.0無前版本

文檔控制i

DocRef:

2020-08-25

內容目錄

文檔控制

更改記錄i

內容目錄ii

1.Mysql概述4

1.1.Mysql說明及特性4

1.2.Mysql的安裝5

1.3.Mysql的界面化工具13

2.Mysql引擎14

Mysql弓I擎介紹14

z2

存儲引擎種類14

z3

InnoDB與Myisam對比19

24

常用的一些語句20

3.Mysql的基本對象21

3.1.表21

3.2.索引23

3.3.視圖30

4.創(chuàng)建存儲過程/函數(shù)34

4.1.存儲過程34

4.2.函數(shù)38

5.鎖機制(事務控制)42

5.1.數(shù)據(jù)庫事務42

5.2.數(shù)據(jù)庫鎖機制46

6.Mysql性能優(yōu)化59

6.1.系統(tǒng)優(yōu)化59

6.2.Mysql優(yōu)化配置62

6.3.應用程序SQL語句+程序架構調整73

7.主從復制&集群83

7.1.集群83

7.2.主從復制89

7.3.集群實施方案112

8.MysqlDBA124

8.1.數(shù)據(jù)備份和恢復124

8.2.數(shù)據(jù)庫遷移127

9.Mysql與其他數(shù)據(jù)庫區(qū)別(ORACLE)130

10.常用Mysql腳本137

文檔控制ii

DocRef:

2020-08-25

10.1.數(shù)據(jù)字典導出(PDMReader)137

10.2.數(shù)據(jù)庫監(jiān)控常用腳本145

10.3.數(shù)據(jù)庫性能查看腳本147

未結與已結問題148

未接問題148

已結問題148

文檔控制iii

DocRef:

2020-08-25

1.Mysql概述

1.1.Mysql說明及特性

1.1.1.概述

MySQL是一個開放源碼的小型關聯(lián)式(關系型)數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典

MySQLAB公司。目前MySQL被廣泛地應用在Inte:rnet上的中小型網(wǎng)站中。由于其體積小、

速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總

體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。

1.1.2.特性

>(代碼可移植)使用C和C++編寫,并使用了多種編譯器進行測試,保證源代碼的

可移植性。*

>(多操作系統(tǒng))支持AIX、B$Di、FreeBSD、HP-UX、Linux、MacOS.NovellNetware,

NetBSD,OpenBSD、OS/2Wrap、Solaris,SunOS,Windows等多種操作系統(tǒng)。*

A為多種編程語言提供了API。

>(例如c語言的■—個api:

>intSTDCALLmysql_query(MYSQL*mysql,constchar*q);

>第一個參數(shù)為mysql很多重要變量的指針,第二個為sql語句)

>(多線程)支持多線程,充分利用CPU資源,支持多用戶。*

>(多語言)提供多語言支持,常見的編碼如中文的GB2312、BIG5,日文的

$hift_JI$等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。

>提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑。

>可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。

1.1.3.四種數(shù)據(jù)庫對比

數(shù)據(jù)庫系統(tǒng)OracleSQLServerBtySQLDB2

是否免到收費收費免費收費

存儲過程支持支持支持支持

視圖支持支持支持支持

颼支持支持不支持支持

觸發(fā)器支持支持支持支持

甦強中中強

復雜查詢強中弱中

索引豐富一般弱中

叁多多多

事務處理強強弱中

未結與已結問題4of8

DocRef:

2020-08-25

1.2.Mysql的安裝

1.2.1.mysql5.0安裝包

/downk)ads/file/?id=406659

1.2.2.mysql的安裝

>mysql安裝圖文教程1

mysql安裝向導啟動,按“Next”繼續(xù)

>mysql圖文安裝教程2

選擇安裝類型,有“Typical(默認)"、“Complete(完全)”、“Custom(用戶自

定義)”三個選項,我們選擇“Custom”,有更多的選項,也方便熟悉安裝過程

>mysql圖文安裝教程3

在“DeveloperComponents(開發(fā)者部分)"上左鍵單擊,選擇"Thisfeature,andall

subfeatures,willbeinstalledonlocalharddrive.v,即“此部分,及下屬子

未結與已結問題50f8

DocRef:

2020-08-25

部分內容,全部安裝在本地硬盤上”。在上面的"MySQLServer(mysql服務器)>

aClientPrograms(mysql客戶端程序)"、^Documentation(文檔)”也如此操作,

以保證安裝所有文件。點選“Change.,手動指定安裝目錄。

>mysql圖文安裝教程4

未結與已結問題60f8

DocRef:

2020-08-25

填上安裝目錄,我的是"F:\Server\MySQL\MySQLServer5.0”,也建議不要放在與操

作系統(tǒng)同一分區(qū),這樣可以防止系統(tǒng)備份還原的時候,數(shù)據(jù)被清空。按“0K”繼續(xù)。

>mysql圖文安裝教程5

返回剛才的界面,按“Next”繼續(xù)

>mysql圖文安裝教程7

正在安裝中,請稍候,直到出現(xiàn)下面的界面

未結與已結問題70f8

DocRef:

2020-08-25

>mysql圖文安裝教程8

現(xiàn)在軟件安裝完成了,出現(xiàn)上面的界面,這里有一個很好的功能,mysql配置向導,不

用向以前一樣,自己手動亂七八糟的配置my.ini了,將ConfiguretheMysqlServer

now”前面的勾打上,點“Finish”結束軟件的安裝并啟動mysql配置向導。

>mysql圖文安裝教程9

mysql配置向導啟動界面,按“Next”繼續(xù)

>mysql圖文安裝教程10

選擇配置方式,"DetailedConfiguration(手動精確配置)"、"StandardConfiguration

(標準配置)”,我們選擇“DetailedConfiguration",方便熟悉配置過程

>mysql圖文安裝教程11

選擇服務器類型,"DeveloperMachine(開發(fā)測試類,mysql占用很少資源)"、“Server

Machine(服務器類型,mysql占用較多資源)"、"DedicatedMySQLServerMachine

(專門的數(shù)據(jù)庫服務器,mysql占用所有可用資源)”,大家根據(jù)自己的類型選擇了,

一般選"ServerMachine",不會太少,也不會占滿。

未結與已結問題80f8

DocRef:

2020-08-25

>mysql圖文安裝教程12

選擇mysql數(shù)據(jù)庫的大致用途,“MultifunctionalDatabase(通用多功能型,好)”、

^TransactionalDatabaseOnly(服務器類型,專注于事務處理,一般)”、

uNon-Transactiona1DatabaseOnly(非事務處理型,較簡單,主要做一些監(jiān)控、記

數(shù)用,對MylSAM數(shù)據(jù)類型的支持僅限于non-transactional),隨自己的用途而選擇

了,我這里選擇“TransactionalDatabase0nly,,,按“Next”繼續(xù)。

>mysql圖文安裝教程13

對InnoDBTablespace進行配置,就是為TnnoDB數(shù)據(jù)庫文件選擇一個存儲空間,如果

修改了,要記住位置,重裝的時候要選擇一樣的地方,否則可能會造成數(shù)據(jù)庫損壞,當

然,對數(shù)據(jù)庫做個備份就沒問題了,這里不詳述。我這里沒有修改,使用用默認位置,

直接按“Next”繼續(xù)

未結與已結問題90f8

DocRef:

2020-08-25

>mysql圖文安裝教程14

選擇您的網(wǎng)站的一般mysql訪問量,同時連接的數(shù)目,“DecisionSupport(DSS)/OLAP

(20個左右)"、"OnlineTransactionProcessing(OLTP)(500個左右)"、"Manual

Setting(手動設置,自己輸一個數(shù))”,我這里選"OnlineTransaction

Processing(OLTP)",自己的服務器,應該夠用了,按“Next”繼續(xù)

>mysql圖文安裝教程15

是否啟用TCP/IP連接,設定端口,如果不啟用,就只能在自己的機器上訪問mysql數(shù)

據(jù)庫了,我這里啟用,把前面的勾打上,PortNumber:3306,在這個頁面上,您還可

以選擇"啟用標準模式"(EnableStrictMode),這樣MySQL就不會允許細小的語法

錯誤。如果您還是個新手,我建議您取消標準模式以減少麻煩。但熟悉MySQL以后,盡

量使用標準模式,因為它可以降低有害數(shù)據(jù)進入數(shù)據(jù)庫的可能性。按“Next”繼續(xù)

>mysql圖文安裝教程16

西文編碼,第二個是多字節(jié)的通用utf8編碼,都不是我們通用的編碼,這里選擇第三

個,然后在CharacterSet那里選擇或填入“gbk”,當然也可以用“gb2312”,區(qū)別

就是gbk的字庫容量大,包括了gb2312的所有漢字,并且加上了繁體字、和其它亂七

未結與已結問題10of8

DocRef:

2020-08-25

八糟的字——使用mysql的時候,在執(zhí)行數(shù)據(jù)操作命令之前運行一次“SETNAMESGBK;"

(運行一次就行了,GBK可以替換為其它值,視這里的設置而定),就可以正常的使用

漢字(或其它文字)了,否則不能正常顯示漢字。按“Next”繼續(xù)。(選utf8就好)

>mysql圖文安裝教程17

選擇是否將mysql安裝為windows服務,還可以指定ServiceName(服務標識名稱),

是否將mysql的bin目錄加入到WindowsPATH(加入后,就可以直接使用bin下的文件,

而不用指出目錄名,比如連接,"mysql.exe-uusername-ppassword;w就可以了,不

用指出mysql.exe的完整地址,很方便),我這里全部打上了勾,ServiceName不變。

按“Next”繼續(xù)。選擇是否將mysql安裝為windows服務,還可以指定ServiceName

(服務標識名稱),是否將mysql的bin目錄加入到WindowsPATH(加入后,就可以直

接使用bin下的文件,而不用指出目錄名,比如連接,“mysql.exc-uusername

-ppassword;"就可以了,不用指出mysql.exe的完整地址,很方便),我這里全部打

上了勾,ServiceName不變。按“Next”繼續(xù)。

>mysql圖文安裝教程18

未結與已結問題llof8

DocRef:

2020-08-25

這一步詢問是否要修改默認root用戶(超級管理)的密碼(默認為空),“Newroot

password”如果要修改,就在此填入新密碼(如果是重裝,并且之前已經(jīng)設置了密碼,

在這里更改密碼可能會出錯,請留空,并將“ModifySecuritySettingsM前面的勾去

掉,安裝配置完成后另行修改密碼),“Confirm(再輸一遍)”內再填一次,防止輸

錯。"Enablerootaccessfromremotemachines(是否允許root用戶在其它的機器

上登陸,如果要安全,就不要勾上,如果要方便,就勾上它)"。最后“CreateAnAnonymous

Account(新建一個匿名用戶,匿名用戶可以連接數(shù)據(jù)庫,不能操作數(shù)據(jù),包括查詢)”,

一般就不用勾了,設置完畢,按"Next”繼續(xù)。

>mysql圖文安裝教程19

確認設置無誤,如果有誤,按“Back”返回檢查。按“Execute”使設置生效。

>mysql圖文安裝教程20

設置完畢,按“Finish”結束mysql的安裝與配置一一這里有一個比較常見的錯誤,就

是不能"Startservice",一般出現(xiàn)在以前有安裝mysql的服務器上,解決的辦法,

先保證以前安裝的mysql服務器徹底卸載掉了;不行的話,檢查是否按上面一步所說,

之前的密碼是否有修改

未結與已結問題120f8

DocRef:

2020-08-25

照上面的操作;如果依然不行,將mysql安裝目錄下的data文件夾備份,然后刪除,

在安裝完成后,將安裝生成的data文件夾刪除,備份的data文件夾移回來,再重啟

mysql服務就可以了,這種情況下,可能需要將數(shù)據(jù)庫檢查一下,然后修復一次,防止

數(shù)據(jù)出錯。

1.3.Mysql的界面化工具

SQLiteNavicat等等

下載地址:http:〃www.newasp.net/soft/7075.html

navicat注冊碼名和組織都是:iNViSiBLETEAM

NavicatforMySQLEnterpriseEdition8注冊碼:NAVJTV56S-3YUU-MVHV

未結與已結問題130f8

DocRef:

2020-08-25

2.Mysql引擎

2.1.Mysql引擎介紹

存儲引擎說白了就是如何存儲數(shù)據(jù)、如何為存儲的數(shù)據(jù)建立索引和如何更新、查詢數(shù)據(jù)

等技術的實現(xiàn)方法。因為在關系數(shù)據(jù)庫中數(shù)據(jù)的存儲是以表的形式存儲的,所以存儲引

擎也可以稱為表類型(即存儲和操作此表的類型)。

在Oracle和$QLServer等數(shù)據(jù)庫中只有一種存儲引擎,所有數(shù)據(jù)存儲管理機制都是一

樣的。而MySql數(shù)據(jù)庫提供了多種存儲引擎。用戶可以根據(jù)不同的需求為數(shù)據(jù)表選擇不

同的存儲引擎,用戶也可以根據(jù)自己的需要編寫自己的存儲引擎。

Connectors

NativeCAPI,JDBC,ODBC,.NET,PHP,Python,Perl.Ruby,Cobol

MySQLServer

ConnectionPool

ManagementAuthenucation-ThreadReuse-Carmect>onUmtts-CheckMemcry-Caches

Services

&UtilitiesOptimizer"'V^Cachcs&Buffers\

Parser

Backup&SQLInterfaceV

Recovery,

S?curttyOIL,OOLQueryTranslation,/AccessPaths,Globaland

EngineSpedfic

Replication,StoredProceduresObjectPrivilegeStaDsbcs

Ouster,Trigoers,etc.Caches&Buffers

Admimstraboc.

Configuration,

、&Metadatas人人人

MySQL插件式存儲引擎的體系結構

2.2.存儲引擎種類

2.2.1.InnoDB(默認的Mysql引擎)

>概要說明:

InnoDB表類型可以看作是對MylSAM(最原始)的進一步更新產(chǎn)品,它提供了事務、行級

鎖機制和外鍵約束的功能。(適用于頻繁的進行更新、刪除操作)

InnoDB給Mysql的表提供了事務、回滾、崩潰修復能力、多版本并發(fā)控制的事務安全、

間隙鎖(可以有效的防止幻讀的出現(xiàn))、支持輔助索引、聚簇索引、自適應hash索引、

支持熱備、行級鎖。還有InnoDB是Mysql上唯一一個提供了外鍵約束的引擎。

未結與已結問題14of8

DocRef:

2020-08-25

InnoDB存儲引擎中,創(chuàng)建的表的表結構是單獨存儲的并且存儲在.frm文件中。數(shù)據(jù)和索

引存儲在一起的并且存儲在表空間中。但是默認情況下niysql會將數(shù)據(jù)庫的所有InnoDB

表存儲在一個表空間中的。其實這種方式管理起來非常的不方便而且還不支持高級功能

所以建議每個表存儲為一個表空間實現(xiàn)方式為:使用服務器變量

innodb_file_per_table=1。

缺點:InnoDB的備份恢復要麻煩一點,除非你使用了4.1以后版本提供的

Mulit-tablespace支持,因為InnoDB和MylSAM不同,他的數(shù)據(jù)文件并不是獨立對應于每

張表的。而是使用的共享表空間,簡單的拷貝覆蓋方法對他不適用,必須在停掉MYSQL

后對進行數(shù)據(jù)恢復。

>設計原理:

從物理意義上來講,InnoDB表由共享表空間、日志文件組(redo文件組)、表結構定義

文件組成。若將innodb_file_per_table設置為on,則系統(tǒng)將為每一個表單獨的生成一

個table_name.ibd的文件,在此文件中,存儲與該表相關的數(shù)據(jù)、索引、表的內部數(shù)據(jù)

字典信息。表結構文件則以.frm結尾,這與存儲引擎無關。

InnoDB存儲引擎的管理是由引擎本身完成的,表空間是由分散的頁和段組成。

區(qū)由64個連續(xù)的頁組成,每個頁大小為16K,即每個區(qū)大小為1MB,創(chuàng)建新表時,先有32

頁大小的碎片頁存放數(shù)據(jù),使用完后才是區(qū)的申請,(InnoDB最多每次申請4個區(qū),保

證數(shù)據(jù)的順序性能)

頁類型有:數(shù)據(jù)頁、Undo頁、系統(tǒng)頁、事務數(shù)據(jù)頁、插入緩沖位圖頁、以及插入緩沖空

閑列表頁。

以下為InnoDB的表空間結構圖:

口□□□□□□□

口□□□□□□□

口□□□□□□□

口□□□□□□□

口□□□□□□□

□□□□□□□□

□□□□□□□□

□□□□□□□

在InnoDB存儲引擎中,默認表空間文件是ibdatal,初始化為10M,且可以擴展,如下圖

所示:

未結與已結問題150f8

DocRef:

2020-08-25

mysql>showvariableslike'innodbdata%';

+++

|Variablename|Value|

|innodbdatafilepath|ibdatal:10M:autoextend|

Iinnodbdatahomedir|

++-+

2rowsinset(0.00sec)

修改表空間語句:Innodb_data_file_path=ibdatal:370M;ibdata2:50M:autoextend

使用共享表空間存儲方式時,Innodb的所有數(shù)據(jù)保存在一個單獨的表空間里面,而這個

表空間可以由很多個文件組成,一個表可以跨多個文件存在,所以其大小限制不再是文

件大小的限制,而是其自身的限制。從Innodb的官方文檔中可以看到,其表空間的最大

限制為64TB,也就是說,Innodb的單表限制基本上也在64TB左右了,當然這個大小是包

括這個表的所有索引等其他相關數(shù)據(jù)。

而在使用單獨表空間存儲方式時,每個表的數(shù)據(jù)以一個單獨的文件來存放,這個時候的

單表限制,又變成文件系統(tǒng)的大小限制了。

>共享表空間和獨立表空間

共享表空間與獨占表空間可以通過參數(shù)innodb_file_per」able來轉換,若為1,則開啟

獨占表空間,否則,開啟共享表存儲。

在服務器資源有限,單表數(shù)據(jù)不是特別多的情況下,獨立表空間明顯比共享方式效率

更高.但是MySQL默認是共享表空間。

具體的共享表空間和獨立表空間優(yōu)缺點如下:

共享表空間:

優(yōu)點:

可以放表空間分成多個文件存放到各個磁盤上(表空間文件大小不受表大小的限制,如

一個表可以分布在不同步的文件上)。數(shù)據(jù)和文件放在一起方便管理。

缺點:

所有的數(shù)據(jù)和索引存放到一個文件中以為著將有一個很常大的文件,雖然可以把一個大

文件分成多個小文件,但是多個表及索引在表空間中混合存儲,這樣對于一個表做了大

量刪除操作后表空間中將會有大量的空隙,特別是對于統(tǒng)計分析,日值系統(tǒng)這類應用最

不適合用共享表空間。

獨立表空間:

未結與已結問題16of8

DocRef:

2020-08-25

在配置文件(my.cnf)中設置:irmodb_file_pertable

jgjmy-IC^?Q

I?IMySQLServer5Q

3性9?*CE)格式3青看(V)

文件主頁共享重與=Teans!?:■?looistten:,:,*!!*?i。。:i>ar。彳、Acom",.bi”

5fileisonlyflushedtodiskapproximatelyoncepersecond.

*T*ProgramFiles(x86)>MySQL>MySQLServer5.0innodb_flush_log_at_trx_coinmit=l

修改日期

*快速訪問SI?:ThesizeofthebufferInnoDBusesforbufferinglogdata.As

=itisfull,InnoDBwillhavetoflushittodisk.Asitisfl

bin

■e面”2016/8Asoncepersecondanyway,itdoesnotmakesensetohaveitver

?下菽*data2016/8/js(evenwithlongTransactions).

innodb_log_buffer_size=lM

奧如十Docs2016/8/:

examples2016/8Z

.KK/sInnoDB.unlikeMyISAM.usesabufferpooltocachebothindex

include2016/8/]srowdata.Thebiggeryousetthisthelessdisk1/0isneedec

■此電第”

lib2016/8/1*accessdataintables.Onadedicateddatabaseserveryoumay

sparameterupto80%ofthetsachinephysicalnenorysize.Dor.

GOneDrivescripts2016/8/;stoolarge,though,becausecompetitionofthephysicalnemory

share2016/8/-:causepagingintheoperatingsystem.NoteThaion32bitsys

■此電腦smightbelimitedto2-3.5Gofuserlevelmemoryperprocess,

sql-bench2016/8/-

ssetittoohigh.

.臺

□COPYING2006/5/5innodb_buffer_pool_size=42M

EXCEPTIONS-CLIENT2006/5/3

?Sizeofeachlogfileinaloggroup.Youshouldsetthecomt

I宛myI2016/曠

soflogfilestoabout25V100%ofyourbufferpoolsizetoav

/my-huge2006/54-unneededbufferpoolflushactivityonlogfileoverwrite.He

.:my-innodb-heavy-4G2006/5/;「notethatalargerlogfilesizewillincreaseThetimeneedec

srecoveryprocess.

??my-large2006/5/3

innodb_log_file_size=10M

.?my-medium2006/54

.:my-small2006/5/;=NumberofthreadsallowedinsidetheInnoDBkernel.Theoptitr

zdependshighlyontheapplication,hardwareaswellastheOS

?:my-template2006/4/1

sschedulerproperties.Atoohighvaluemayleadtothreadthr

innodb_thread_concurrency=10

18個項目選中1個項目9.04KB

優(yōu)點:

1.每個表都有自己獨立的表空間。

2.每個表的數(shù)據(jù)和索引都會存在自己的表空間中。

3.可以實現(xiàn)單表在不同的數(shù)據(jù)庫中移動。

4.空間可以回收(除droptable操作處,表空不能自己回收)

a)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論