版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Page1/24mysql的安裝版本5.5使用sysbench工具測試,發(fā)現(xiàn)mysql5.5比5.1性能要高上很多,因此我們使用mysql5.5版本。安裝方式關(guān)于mysql的安裝方式可以通過rpm包,二進(jìn)制編譯,yum安裝,源碼編譯安裝;在5.5之前的版本用的都是./configure的安裝方式,而自MySQL從5.5版本開始,通過./configure進(jìn)行編譯配置方式已經(jīng)被取消,取而代之的是cmake工具,因此,我們首先要在系統(tǒng)中源碼編譯安裝cmake工具。Cmke安裝在安裝前請確定gcc-c++編譯器是否安裝,如果沒有,請通過yuminstallgcc-c++安裝。如果提示ThissystemisnotregisteredwithRHN,即yum沒有注冊,請參考附錄1。#wget/files/v2.8/cmake-2.8.4.tar.gz#tarzxvfcmake-2.8.4.tar.gz#cdcmake-2.8.4#./configure#make#makeinstall基本上安裝會很順利,安裝安裝前的系統(tǒng)設(shè)置建立mysql安裝目錄及數(shù)據(jù)存放目錄。#mkdir/opt/mysql#mkdir/opt/mysql/data創(chuàng)建用戶和用戶組#groupaddmysql#useradd-gmysqlmysql賦予數(shù)據(jù)存放目錄權(quán)限#chownmysql:mysql–R/opt/mysql/data從configure更換為cmake
由于我們平時習(xí)慣了使用configure方式,并且所使用的參數(shù)也是比較個性化的,換成cmake之后,這一方面會帶來不少的麻煩。還好,MySQL的官方網(wǎng)站提供了二者的參數(shù)對照表,我們可以盡可能的保留之前的參數(shù),來編譯配置新的MySQL版本。configure與cmake參數(shù)對照指南:/wiki/Autotools_to_CMake_Transition_Guide以我自己為例,之前我一直使用的參數(shù)為:./configure--prefix=/opt/mysql/--sysconfdir=/opt/mysql/etc--localstatedir=/opt/mysql/data--with-tcp-port=3306--with-unix-socket-path=/tmp/mysqld.sock--with-mysqld-user=mysql--enable-assembler--with-extra-charsets=all--enable-thread-safe-client--with-big-tables--with-readline--with-ssl--with-embedded-server--enable-local-infile--with-plugins=partition,innobase,myisammrglower_case_table_names=1區(qū)分大小寫,表出現(xiàn)大小寫時添加經(jīng)過與cmake的參數(shù)對照之后,去除掉已經(jīng)被取消的參數(shù)(大多數(shù)是因?yàn)樾掳姹疽呀?jīng)默認(rèn)啟用),cmake的參數(shù)配置如下:cmake.\-DCMAKE_BUILD_TYPE:STRING=Release\-DCMAKE_INSTALL_PREFIX:PATH=/opt/mysql\-DCOMMUNITY_BUILD:BOOL=ON\-DENABLED_PROFILING:BOOL=ON\-DENABLE_DEBUG_SYNC:BOOL=OFF\-DINSTALL_LAYOUT:STRING=STANDALONE\-DMYSQL_DATADIR:PATH=/opt/mysql/data\-DMYSQL_MAINTAINER_MODE:BOOL=OFF\-DWITH_EMBEDDED_SERVER:BOOL=ON\-DWITH_EXTRA_CHARSETS:STRING=all\-DWITH_SSL:STRING=bundled\-DWITH_UNIT_TESTS:BOOL=OFF\-DWITH_ZLIB:STRING=bundled\-LH安裝編譯mysql5.5最新版本我這里編譯安裝的是MySQL5.5.13通過wget直接下載得到,如果連接失敗,可以在.tw/pub/MySQL/Downloads/MySQL-5.1/下載各種版本。安裝模式可參考/index.php/2011/06/compile-and-install-mysql-5-5-from-source/#more-2940#wget/mysql/MySQL-5.5/mysql-5.5.13.tar.gz#tarzxvfmysql-5.5.13.tar.gz#cdmysql-5.5.13mysql-5.5.13#cmake.\-DCMAKE_INSTALL_PREFIX=/opt/mysql\-DSYSCONFDIR=/opt/mysql/etc\-DMYSQL_DATADIR=/opt/mysql/data\-DMYSQL_TCP_PORT=3306\-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock\-DMYSQL_USER=mysql\-DEXTRA_CHARSETS=all\-DWITH_READLINE=1\-DWITH_SSL=system\-DWITH_EMBEDDED_SERVER=1\-DENABLED_LOCAL_INFILE=1\-DWITH_INNOBASE_STORAGE_ENGINE=1\-DWITHOUT_PARTITION_STORAGE_ENGINE=1\使用下面/8183550/viewspace-682189cmake.\-DCMAKE_BUILD_TYPE:STRING=Release\-DCMAKE_INSTALL_PREFIX:PATH=/opt/mysql\-DCOMMUNITY_BUILD:BOOL=ON\-DENABLED_PROFILING:BOOL=ON\-DENABLE_DEBUG_SYNC:BOOL=OFF\-DINSTALL_LAYOUT:STRING=STANDALONE\-DMYSQL_DATADIR:PATH=/opt/mysql/data\-DMYSQL_MAINTAINER_MODE:BOOL=OFF\-DWITH_EMBEDDED_SERVER:BOOL=ON\-DWITH_EXTRA_CHARSETS:STRING=all\-DWITH_SSL:STRING=bundled\-DWITH_UNIT_TESTS:BOOL=OFF\-DWITH_ZLIB:STRING=bundled\-LH安裝過程中會遇到如下問題/thread-1479025-1-1.html--CouldNOTfindCurses(missing:
CURSES_LIBRARYCURSES_INCLUDE_PATH)
CMakeErroratcmake/readline.cmake:82(MESSAGE):
Curseslibrarynotfound.
Pleaseinstallappropriatepackage,
removeCMakeCache.txtandreruncmake.OnDebian/Ubuntu,packagenameislibncurses5-dev,onRedhatandderivatesitisncurses-devel.
CallStack(mostrecentcallfirst):
cmake/readline.cmake:126(FIND_CURSES)
cmake/readline.cmake:216(MYSQL_USE_BUNDLED_LIBEDIT)
CMakeLists.txt:250(MYSQL_CHECK_READLINE)
--Configuringincomplete,errorsoccurred!mysql-5.5.13#rmCMakeCache.txt#yuminstallncurses-devel[root@localhostmysql-5.5.11]#yuminstallbison
[root@localhostmysql-5.5.11]#cmake
#make#makeinstall在make與makeinstall的時候可以看到進(jìn)度百分比,感覺這一點(diǎn)要比configure方式要好。配置并初始化數(shù)據(jù)庫創(chuàng)建f配置文件#mkdir/opt/mysql/log#mkdir/opt/mysql/etc#cpsupport-files/f/opt/mysql/etc/f初始化數(shù)據(jù)庫執(zhí)行前需賦給scripts/mysql_install_db文件執(zhí)行權(quán)限#chmod755scripts/mysql_install_db#scripts/mysql_install_db--user=mysql--basedir=/opt/mysql/--datadir=/opt/mysql/data/賦予shell腳本可執(zhí)行權(quán)限:#mkdir/opt/mysql/init.d#cpsupport-files/mysql.server/opt/mysql/init.d/mysql啟動MySQL#/opt/mysql/init.d/mysqlstart通過命令行登錄管理MySQL服務(wù)器(提示輸入密碼時直接回車):#/opt/mysql/bin/mysql-uroot-p-S/tmp/mysql.sock輸入以下SQL語句,創(chuàng)建一個具有root權(quán)限的用戶(admin)和密碼(12345678):GRANTALLPRIVILEGESON*.*TO′admin′@′localhost′IDENTIFIEDBY′12345678′;GRANTALLPRIVILEGESON*.*TO′admin′@′′IDENTIFIEDBY′12345678′;為root帳戶設(shè)置初始密碼#/opt/mysql/bin/mysqladmin-urootpassword′new-password′刪除本機(jī)匿名連接的空密碼帳號/opt/mysql/bin/mysql-uroot-p′new-password′mysql>usemysql;//選擇系統(tǒng)數(shù)據(jù)庫mysqlmysql>selectHost,User,Passwordfromuser;//查看所有用戶mysql>deletefromuserwherepassword="";mysql>flushprivileges;mysql>selectHost,User,Passwordfromuser;//確認(rèn)密碼為空的用戶是否已全部刪除mysql>exit;以上文檔參考/html/2011/08/31/%e6%ba%90%e7%a0%81%e7%bc%96%e8%af%91%e5%ae%89%e8%a3%85-mysql-5-5-13.html常見錯誤MySQLError#2002Can'tconnecttolocalmysqlserver'/var/mysql/mysql.sock'(2)cd/var/lib/sudomkdirmysqlcdmysqlln-s/tmp/mysql.sock/var/lib/mysql/mysql.sock如果還是不能成功證明mysql.sock沒有生成到/opt/mysql/init.d下mysqlstart就會生成mysql.sock不能進(jìn)行servicemysqlrestart的話,出現(xiàn)mysql:unrecognizedservice需要將/opt/mysql/init.d/mysql復(fù)制到/etc/rc.d/init.d/則可以servicemysqlrestart了。查看開機(jī)啟動項(xiàng)chkconfig–list將mysql加入開機(jī)啟動項(xiàng)chkconfig--addmysql。打開mysql遠(yuǎn)程連接打開MySQL遠(yuǎn)程訪問權(quán)限1.以root帳戶登陸MySQL
MySQL-uroot-p123456
注:123456為root用戶的密碼。2.創(chuàng)建遠(yuǎn)程登陸用戶并授權(quán)grantallPRIVILEGESondiscuz.*toted@'23'identifiedby'123456';
注:上面的語句表示將discuz數(shù)據(jù)庫的所有權(quán)限授權(quán)給ted這個用戶,允許ted用戶在23這個IP進(jìn)行遠(yuǎn)程登陸,并設(shè)置ted用戶的密碼為123456。改表法
可能是你的帳號不允許從遠(yuǎn)程登陸,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql后,更改"mysql"數(shù)據(jù)庫里的"user"表里的"host"項(xiàng),從"localhost"改稱"%"
mysql-uroot-p
mysql>usemysql;
mysql>updateusersethost='%'whereuser='root';
mysql>selecthost,userfromuser;
如果還不行,就關(guān)閉防火墻如果你忘記了MySQL密碼,如何重置它呢?下面是錯誤答案:首先停止MySQL服務(wù),然后使用skip-grant-tables參數(shù)啟動它:shell>/etc/init.d/mysqlstopshell>mysqld_safe–skip-grant-tables&此時無需授權(quán)就可以進(jìn)入到MySQL命令行,使用SQL重置MySQL密碼:UPDATEmysql.userSETPassword=PASSWORD('…')WHEREUser='…'ANDHost='…';FLUSHPRIVILEGES;為什么說它是錯誤答案?因?yàn)樵趩渭兪褂胹kip-grant-tables參數(shù)啟動服務(wù)后,除非數(shù)據(jù)庫服務(wù)器屏蔽了外網(wǎng)訪問,否則除了自己,其它別有用心的人也可能訪問數(shù)據(jù)庫,盡管重置密碼所需的時間很短,但俗話說不怕賊偷就怕賊惦記著,任何紕漏都可能釀成大禍。下面是正確答案:關(guān)鍵點(diǎn)是:在使用skip-grant-tables參數(shù)的同時,還要加上skip-networking參數(shù):shell>mysqld_safe–skip-grant-tables–skip-networking&接著使用SQL重置密碼后,記得去掉skip-networking,以正常方式重啟MySQL服務(wù):shell>/etc/init.d/mysqldrestart上面的方法需要重啟兩次服務(wù),實(shí)際上還能更優(yōu)雅一點(diǎn),重啟一次即可:首先需要把用到的SQL語句保存到一個文本文件里(/path/to/init/file):UPDATEmysql.userSETPassword=PASSWORD('…')WHEREUser='…'ANDHost='…';FLUSHPRIVILEGES;接著使用init-file參數(shù)啟動MySQL服務(wù),shell>/etc/init.d/mysqlstopshell>mysqld_safe–init-file=/path/to/init/file&此時,密碼就已經(jīng)重置了,最后別忘了刪除文件內(nèi)容,免得泄露密碼。提示:本文用到的參數(shù)都是通過命令行mysqld_safe傳遞的,實(shí)際上也可以通過f.mysql參數(shù)配置[mysqld]port=3306socket=/tmp/mysql.sockskip-external-lockingback_log=200interactive_timeout=7200table_cache=512key_buffer_size=40Mmax_connections=1024#record_buffer=16Mthread_cache_size=80wait_timeout=7200max_allowed_packet=1Mtable_open_cache=64sort_buffer_size=512Knet_buffer_length=8Kread_buffer_size=256Kread_rnd_buffer_size=512Kmyisam_sort_buffer_size=8Mlinux下mysql技巧在linux下顯示所有的存儲過程信息showprocedurestatus\G。在shell下操縱存儲過程。mysql-uroot-p-e"showprocedurestatus\G">mysql.txtshowdatabases;useoperator_3n;showtables;describeuser;showprocesslist;showengines;showvariables;showstatus;showevents;showprocedurestatus;showfunctionstatus;showevents;showgrants;showindexfromuser;showinnodbstatus;showerrors;showprivileges;showglobalstatus;showmutexstatus;將window下數(shù)據(jù)導(dǎo)入到linux導(dǎo)出方式mysqldump--default-character-set=utf8-uroot-p-ntd-Roperator_3n>d:/operator_3n_backup_20120209.sqlmysqldump--default-character-set=utf8-uroot-p-ntd-Rsp_voipgateway>d:/sp_voipgateway_backup_20120209.sql-ntd是表示導(dǎo)出存儲過程;-R是表示導(dǎo)出函數(shù)如上便可將windows下的數(shù)據(jù)(包括存儲過程和函數(shù))到處到sql中。然后通過cuteftp上載到linux下進(jìn)行導(dǎo)入。也可以重新執(zhí)行腳本進(jìn)行導(dǎo)入,將所有腳本放在linux下直接進(jìn)行執(zhí)行。三種導(dǎo)入方式:#mysqldump–uroot–poperator_3n</…/operator_3n_backup_20120209.sqlmysql>sourceoperator_3n_backup_20120209.sqlmysql>\.operator_3n_backup_20120209.sqlLinux基準(zhǔn)測試sysbench--test=oltp--mysql-table-engine=innodb--oltp-table-size=100000--mysql-socket=/tmp/mysql.sock--mysql-db=sbtest--mysql-user=root--mysql-password=123456preparesysbench--num-threads=16--max-requests=100000--test=oltp--oltp-table-size=1000000--mysql-socket=/tmp/mysql.sock--mysql-db=sbtest--mysql-user=root--mysql-password=123456--oltp-read-onlyrunLinux優(yōu)化如何使用SQLProfiler性能分析器mysql的sql性能分析器主要用途是顯示sql執(zhí)行的整個過程中各項(xiàng)資源的使用情況。分析器可以更好的展示出不良SQL的性能問題所在。
下面我們舉例介紹一下MySQLSQLProfiler的使用方法:
首先,開啟MySQLSQLProfiler
mysql>SELECT@@profiling;
++
|@@profiling|
++
|0|
++
1rowinset(0.00sec)
mysql>SETprofiling=1;
QueryOK,0rowsaffected(0.00sec)
mysql>SELECT@@profiling;
++
|@@profiling|
++
|1|
++
1rowinset(0.00sec)
默認(rèn)情況下profiling的值為0表示MySQLSQLProfiler處于OFF狀態(tài),開啟SQL性能分析器后profiling的值為1.
通過sql性能分析器,我們來對比一下下列語句前后2次執(zhí)行過程的差異,對我們了解sql的詳細(xì)執(zhí)行過程是非常有幫助的。
mysql>createtablet_enginesselect*fromt_engines1;
QueryOK,57344rowsaffected(0.10sec)
Records:57344Duplicates:0Warnings:0
mysql>selectcount(*)fromt_engines;
++
|count(*)|
++
|57344|
++
1rowinset(0.00sec)
mysql>selectcount(*)fromt_engines;
++
|count(*)|
++
|57344|
++
1rowinset(0.00sec)
mysql>SHOWPROFILES;
++++
|Query_ID|Duration|Query|
++++
|26|0.10213775|createtablet_enginesselect*fromt_engines1|
|27|0.00032775|selectcount(*)fromt_engines|
|28|0.00003850|selectcount(*)fromt_engines|
++++
15rowsinset(0.01sec)
mysql>SHOWPROFILEFORQUERY27;
+++
|Status|Duration|
+++
|(initialization)|0.00000425|
|checkingquerycacheforquery|0.00004050|
|checkingpermissions|0.00001050|
|Openingtables|0.00018250|
|Systemlock|0.00000450|
|Tablelock|0.00001775|
|init|0.00001075|
|optimizing|0.00000550|
|executing|0.00002775|
|end|0.00000450|
|queryend|0.00000325|
|storingresultinquerycache|0.00000400|
|freeingitems|0.00000400|
|closingtables|0.00000500|
|loggingslowquery|0.00000300|
+++
15rowsinset(0.00sec)
mysql>SHOWPROFILEFORQUERY28;
+++
|Status|Duration|
+++
|(initialization)|0.00000350|
|checkingquerycacheforquery|0.00000750|
|checkingprivilegesoncachedquery|0.00000500|
|checkingpermissions|0.00000525|
|sendingcachedresulttoclient|0.00001275|
|loggingslowquery|0.00000450|
+++
6rowsinset(0.00sec)
mysql>SELECTsum(FORMAT(DURATION,6))ASDURATIONFROMINFORMATION_SCHEMA.PROFILINGWHEREQUERY_ID=27ORDERBYSEQ;
++
|DURATION|
++
|0.000326|
++
1rowinset(0.00sec)
mysql>SELECTsum(FORMAT(DURATION,6))ASDURATIONFROMINFORMATION_SCHEMA.PROFILINGWHEREQUERY_ID=28ORDERBYSEQ;
++
|DURATION|
++
|0.000039|
++
1rowinset(0.00sec)
mysql>
從上面的例子中我們可以清晰的看出2次執(zhí)行count語句的差別,SHOWPROFILEFORQUERY27展現(xiàn)的是第一次count統(tǒng)計(jì)的執(zhí)行過程,包含了Openingtables、Tablelock等操作。而SHOWPROFILEFORQUERY28展示了第二次count統(tǒng)計(jì)的執(zhí)行過程,第二次count直接從查詢緩存中返回count統(tǒng)計(jì)結(jié)果,通過對比2次統(tǒng)計(jì)的總執(zhí)行時間發(fā)現(xiàn),緩存讀的速度接近物理讀的10倍。通過使用SQL性能分析器可以幫助我們對一些比較難以確定性能問題的SQL進(jìn)行診斷,找出問題根源。如果不帶for參數(shù)則指列出最后一條語句的profile信息:showprofilecpu,blockioforquery1;完成之后需要SETprofiling=0將其值為關(guān)閉。mysql性能優(yōu)化工具“tuner-primer”wget/MySQL/tuning-primer.sh
chmod+xtuning-primer.sh
cp./tuning-primer.sh/bin結(jié)果報(bào)告:
會用幾種顏色標(biāo)記:
藍(lán)色:總指標(biāo)
綠色:表示此參數(shù)還可以
紅色:表示此參數(shù)有嚴(yán)重問題
深紅色:表示有問題參數(shù)
黃色:一些信息提示
而且還有警告:Mysql技巧大全Mysql區(qū)分奇偶數(shù)SELECT*FROMdataWHERERecNomod2=1這個是顯示奇數(shù)列.SELECT*FROMdataWHERERecNo&1這個是顯示奇數(shù)列.SELECT*FROMdataWHERERecNomod2=0這個是顯示偶數(shù)列.判斷某個列是否存在selectcount(*)frominformation_schema.columnswheretable_schema='庫名'andtable_name='表名'andcolumn_name='列名'selectCOLUMN_NAMEfrominformation_schema.columnswheretable_schema='operator_3n'andtable_name='user'ANDCOLUMN_NAME='Name';按空格分開各個字符CONCAT_WS()代表CONCATWithSeparator,是CONCAT()的特殊形式。第一個參數(shù)是其它參數(shù)的分隔符。分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串,也可以是其它參數(shù)。如果分隔符為NULL,則結(jié)果為NULL。函數(shù)會忽略任何分隔符參數(shù)后的NULL值。mysql>SELECTCONCAT_WS(',','Firstname','Secondname','LastName');->'Firstname,Secondname,LastName'mysql>SELECTCONCAT_WS(',','Firstname',NULL,'LastName');->'Firstname,LastName'CONCAT_WS()不會忽略任何空字符串。(然而會忽略所有的NULL)。附錄Yum重新安裝使用redhat系統(tǒng)在線安裝時提示ThissystemisnotregisteredwithRHN.如下:[root@localhost~]#yuminstallhttpd
Loadedplugins:rhnplugin,security
ThissystemisnotregisteredwithRHN.
RHNsupportwillbedisabled.
SettingupInstallProcess
Nopackagehttpdavailable.
Nothingtodo
解決方案:1.卸載redhat自帶的yum組件[root@localhost~]#rpm-qa|grepyum|xargsrpm-e--nodeps2.安裝centos的yum包[root@localhost~]#wget
/centos/5/os/i386/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm注:下面這個是64位系統(tǒng)的yum-meta-datawget/centos/5/os/x86_64/CentOS/yum-metadata-parser-1.1.2-3.el5.centos.x86_64.rpm
[root@localhost~]#wget
/centos/5/os/i386/CentOS/yum-fastestmirror-1.1.16-16.el5.centos.noarch.rpm
[root@localhost~]#wget
/centos/5/os/i386/CentOS/yum-3.2.22-37.el5.centos.noarch.rpm
[root@localhost~]#rpm-ivh*.rpm
warning:yum-3.2.22-37.el5.centos.noarch.rpm:HeaderV3DSAsignature:NOKEY,keyIDe8562897
Preparing...
###########################################[100%]
1:yum-metadata-parser
###########################################[33%]
2:yum-fastestmirror
###########################################[67%]
3:yum
###########################################[100%]
3.下載更新源,并存放在系統(tǒng)目錄中
[root@localhost~]#wget/soft/lemp/CentOS-Base.repo[root@localhost~]#mvCentOS_Base.repo/etc/yum.repos.d/CentOS-Base.repo
4.生成緩存并進(jìn)行安裝[root@localhost~]#yummakecache
[root@localhost~]#yuminstallgcc-c++,如果中途出錯,可先安裝常見錯誤集錦1.mysqldump:Goterror:1556:Youcan'tuselockswithlogtables.whenusing使用時出現(xiàn)mysqldump-uroot
-A>all_database.sql時出現(xiàn)mysqldump:Goterror:1556:Youcan'tuselockswithlogtables因?yàn)殒i表時報(bào)錯加上--lock-tables=0參數(shù),不鎖表,即OK了。mysqldump-uroot--lock-tables=0-A>all_database.sql通過showstatus來優(yōu)化MySQL數(shù)據(jù)庫關(guān)鍵字:mysql1,查看MySQL服務(wù)器配置信息1.mysql>showvariables;2,查看MySQL服務(wù)器運(yùn)行的各種狀態(tài)值1.mysql>showglobalstatus;3,慢查詢1.mysql>showvariableslike'%slow%';2.+++3.|Variable_name|Value|4.+++5.|log_slow_queries|OFF|6.|slow_launch_time|2|7.+++8.mysql>showglobalstatuslike'%slow%';9.+++10.|Variable_name|Value|11.+++12.|Slow_launch_threads|0|13.|Slow_queries|279|14.+++配置中關(guān)閉了記錄慢查詢(最好是打開,方便優(yōu)化),超過2秒即為慢查詢,一共有279條慢查詢4,連接數(shù)1.mysql>showvariableslike'max_connections';2.+++3.|Variable_name|Value|4.+++5.|max_connections|500|6.+++7.8.mysql>showglobalstatuslike'max_used_connections';9.+++10.|Variable_name|Value|11.+++12.|Max_used_connections|498|13.+++設(shè)置的最大連接數(shù)是500,而響應(yīng)的連接數(shù)是498max_used_connections/max_connections*100%=99.6%(理想值_85%)5,key_buffer_sizekey_buffer_size是對MyISAM表性能影響最大的一個參數(shù),不過數(shù)據(jù)庫中多為Innodb1.mysql>showvariableslike'key_buffer_size';2.+++3.|Variable_name|Value|4.+++5.|key_buffer_size|67108864|6.+++7.8.mysql>showglobalstatuslike'key_read%';9.+++10.|Variable_name|Value|11.+++12.|Key_read_requests|25629497|13.|Key_reads|66071|14.+++一共有25629497個索引讀取請求,有66071個請求在內(nèi)存中沒有找到直接從硬盤讀取索引,計(jì)算索引未命中緩存的概率:key_cache_miss_rate=Key_reads/Key_read_requests*100%=0.27%需要適當(dāng)加大key_buffer_size1.mysql>showglobalstatuslike'key_blocks_u%';2.+++3.|Variable_name|Value|4.+++5.|Key_blocks_unused|10285|6.|Key_blocks_used|47705|7.+++Key_blocks_unused表示未使用的緩存簇(blocks)數(shù),Key_blocks_used表示曾經(jīng)用到的最大的blocks數(shù)Key_blocks_used/(Key_blocks_unused+Key_blocks_used)*100%_18%(理想值_80%)6,臨時表1.mysql>showglobalstatuslike'created_tmp%';2.+++3.|Variable_name|Value|4.+++5.|Created_tmp_disk_tables|4184337|6.|Created_tmp_files|4124|7.|Created_tmp_tables|4215028|8.+++每次創(chuàng)建臨時表,Created_tmp_tables增加,如果是在磁盤上創(chuàng)建臨時表,Created_tmp_disk_tables也增加,Created_tmp_files表示MySQL服務(wù)創(chuàng)建的臨時文件文件數(shù):Created_tmp_disk_tables/Created_tmp_tables*100%=99%(理想值<=25%)1.mysql>showvariableswhereVariable_namein('tmp_table_size','max_heap_table_size');2.+++3.|Variable_name|Value|4.+++5.|max_heap_table_size|134217728|6.|tmp_table_size|134217728|7.+++需要增加tmp_table_size7,opentable的情況1.mysql>showglobalstatuslike'open%tables%';2.+++3.|Variable_name|Value|4.+++5.|Open_tables|1024|6.|Opened_tables|1465|7.+++Open_tables表示打開表的數(shù)量,Opened_tables表示打開過的表數(shù)量,如果Opened_tables數(shù)量過大,說明配置中table_cache(5.1.3之后這個值叫做table_open_cache)值可能太小,我們查詢一下服務(wù)器table_cache值1.mysql>showvariableslike'table_cache';2.+++3.|Variable_name|Value|4.+++5.|table_cache|1024|6.+++Open_tables/Opened_tables*100%=69%理想值(>=85%)Open_tables/table_cache*100%=100%理想值(<=95%)8,進(jìn)程使用情況1.mysql>showglobalstatuslike'Thread%';2.+++3.|Variable_name|Value|4.+++5.|Threads_cached|31|6.|Threads_connected|239|7.|Threads_created|2914|8.|Threads_running|4|9.+++如果我們在MySQL服務(wù)器配置文件中設(shè)置了thread_cache_size,當(dāng)客戶端斷開之后,服務(wù)器處理此客戶的線程將會緩存起來以響應(yīng)下一個客戶而不是銷毀(前提是緩存數(shù)未達(dá)上限)。Threads_created表示創(chuàng)建過的線程數(shù),如果發(fā)現(xiàn)Threads_created值過大的話,表明MySQL服務(wù)器一直在創(chuàng)建線程,這也是比較耗資源,可以適當(dāng)增加配置文件中thread_cache_size值,查詢服務(wù)器thread_cache_size配置:1.mysql>showvariableslike'thread_cache_size';2.+++3.|Variable_name|Value|4.+++5.|thread_cache_size|32|6.+++9,查詢緩存(querycache)1.mysql>showglobalstatuslike'qcache%';2.+++3.|Variable_name|Value|4.+++5.|Qcache_free_blocks|2226|6.|Qcache_free_memory|10794944|7.|Qcache_hits|5385458|8.|Qcache_inserts|1806301|9.|Qcache_lowmem_prunes|433101|10.|Qcache_not_cached|4429464|11.|Qcache_queries_in_cache|7168|12.|Qcache_total_blocks|16820|13.+++Qcache_free_blocks:緩存中相鄰內(nèi)存塊的個數(shù)。數(shù)目大說明可能有碎片。FLUSHQUERYCACHE會對緩存中的碎片進(jìn)行整理,從而得到一個空閑塊。Qcache_free_memory:緩存中的空閑內(nèi)存。Qcache_hits:每次查詢在緩存中命中時就增大Qcache_inserts:每次插入一個查詢時就增大。命中次數(shù)除以插入次數(shù)就是不中比率。Qcache_lowmem_prunes:緩存出現(xiàn)內(nèi)存不足并且必須要進(jìn)行清理以便為更多查詢提供空間的次數(shù)。這個數(shù)字最好長時間來看;如果這個數(shù)字在不斷增長,就表示可能碎片非常嚴(yán)重,或者內(nèi)存很少。(上面的free_blocks和free_memory可以告訴您屬于哪種情況)Qcache_not_cached:不適合進(jìn)行緩存的查詢的數(shù)量,通常是由于這些查詢不是SELECT語句或者用了now()之類的函數(shù)。Qcache_queries_in_cache:當(dāng)前緩存的查詢(和響應(yīng))的數(shù)量。Qcache_total_blocks:緩存中塊的數(shù)量。我們再查詢一下服務(wù)器關(guān)于query_cache的配置:1.mysql>showvariableslike'query_cache%';2.+++3.|Variable_name|Value|4.+++5.|query_cache_limit|33554432|6.|query_cache_min_res_unit|4096|7.|query_cache_size|33554432|8.|query_cache_type|ON|9.|query_cache_wlock_invalidate|OFF|10.+++各字段的解釋:query_cache_limit:超過此大小的查詢將不緩存query_cache_min_res_unit:緩存塊的最小大小query_cache_size:查詢緩存大小query_cache_type:緩存類型,決定緩存什么樣的查詢,示例中表示不緩存selectsql_no_cache查詢query_cache_wlock_invalidate:當(dāng)有其他客戶端正在對MyISAM表進(jìn)行寫操作時,如果查詢在querycache中,是否返回cache結(jié)果還是等寫操作完成再讀表獲取結(jié)果。query_cache_min_res_unit的配置是一柄”雙刃劍”,默認(rèn)是4KB,設(shè)置值大對大數(shù)據(jù)查詢有好處,但如果你的查詢都是小數(shù)據(jù)查詢,就容易造成內(nèi)存碎片和浪費(fèi)。查詢緩存碎片率=Qcache_free_blocks/Qcache_total_blocks*100%如果查詢緩存碎片率超過20%,可以用FLUSHQUERYCACHE整理緩存碎片,或者試試減小query_cache_min_res_unit,如果你的查詢都是小數(shù)據(jù)量的話。查詢緩存利用率=(query_cache_size–Qcache_free_memory)/query_cache_size*100%查詢緩存利用率在25%以下的話說明query_cache_size設(shè)置的過大,可適當(dāng)減小;查詢緩存利用率在80%以上而且Qcache_lowmem_prunes>50的話說明query_cache_size可能有點(diǎn)小,要不就是碎片太多。查詢緩存命中率=(Qcache_hits–Qcache_inserts)/Qcache_hits*100%示例服務(wù)器查詢緩存碎片率=20.46%,查詢緩存利用率=62.26%,查詢緩存命中率=1.94%,命中率很差,可能寫操作比較頻繁吧,而且可能有些碎片。10,排序使用情況1.mysql>showglobalstatuslike'sort%';2.+++3.|Variable_name
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 聊城大學(xué)東昌學(xué)院《鋼琴(即興伴奏)(二)》2021-2022學(xué)年第一學(xué)期期末試卷
- 聊城大學(xué)《語文學(xué)科課程標(biāo)準(zhǔn)與教材研究》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024年工程建設(shè)項(xiàng)目咨詢服務(wù)合同
- 2024年企業(yè)碳交易權(quán)交易合同
- 2024年醫(yī)療設(shè)備監(jiān)控系統(tǒng)采購合同
- 2024年公司控制權(quán)及相關(guān)股東權(quán)益保護(hù)合同
- 2024年合同欺詐損失賠償計(jì)算
- 2024年安置房買賣合同中的產(chǎn)權(quán)轉(zhuǎn)移
- 2024年三人共同發(fā)展合同
- 2024年醫(yī)療器械代理銷售合同
- 第六講-中古日本文學(xué)課件
- 《小學(xué)教育政策與法規(guī)》總資料
- 云南花燈教案
- 信任五環(huán):超級銷售拜訪技巧
- 河南省部分退休教師提高基本退休費(fèi)審核表
- 2023年國家電網(wǎng)公司電力安全工作規(guī)程版
- 職業(yè)生涯人物訪談報(bào)告采訪教師
- 2022年山東菏澤醫(yī)專附院招聘11人筆試備考題庫及答案解析
- 申請人生產(chǎn)條件未發(fā)生變化的聲明(空白)
- 國網(wǎng)基建各專業(yè)考試題庫大全-技經(jīng)專業(yè)(考題匯總)
- 中國近現(xiàn)代史綱要第3階段練習(xí)題 參考答案 2023年春 江南大學(xué)
評論
0/150
提交評論