mysql5.5源码安装配置_第1页
mysql5.5源码安装配置_第2页
mysql5.5源码安装配置_第3页
mysql5.5源码安装配置_第4页
mysql5.5源码安装配置_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Page1/24mysql的安装版本5.5使用sysbench工具测试,发现mysql5.5比5.1性能要高上很多,因此我们使用mysql5.5版本。安装方式关于mysql的安装方式可以通过rpm包,二进制编译,yum安装,源码编译安装;在5.5之前的版本用的都是./configure的安装方式,而自MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具,因此,我们首先要在系统中源码编译安装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基本上安装会很顺利,安装安装前的系统设置建立mysql安装目录及数据存放目录。#mkdir/opt/mysql#mkdir/opt/mysql/data创建用户和用户组#groupaddmysql#useradd-gmysqlmysql赋予数据存放目录权限#chownmysql:mysql–R/opt/mysql/data从configure更换为cmake

由于我们平时习惯了使用configure方式,并且所使用的参数也是比较个性化的,换成cmake之后,这一方面会带来不少的麻烦。还好,MySQL的官方网站提供了二者的参数对照表,我们可以尽可能的保留之前的参数,来编译配置新的MySQL版本。configure与cmake参数对照指南:/wiki/Autotools_to_CMake_Transition_Guide以我自己为例,之前我一直使用的参数为:./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区分大小写,表出现大小写时添加经过与cmake的参数对照之后,去除掉已经被取消的参数(大多数是因为新版本已经默认启用),cmake的参数配置如下: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的时候可以看到进度百分比,感觉这一点要比configure方式要好。配置并初始化数据库创建f配置文件#mkdir/opt/mysql/log#mkdir/opt/mysql/etc#cpsupport-files/f/opt/mysql/etc/f初始化数据库执行前需赋给scripts/mysql_install_db文件执行权限#chmod755scripts/mysql_install_db#scripts/mysql_install_db--user=mysql--basedir=/opt/mysql/--datadir=/opt/mysql/data/赋予shell脚本可执行权限:#mkdir/opt/mysql/init.d#cpsupport-files/mysql.server/opt/mysql/init.d/mysql启动MySQL#/opt/mysql/init.d/mysqlstart通过命令行登录管理MySQL服务器(提示输入密码时直接回车):#/opt/mysql/bin/mysql-uroot-p-S/tmp/mysql.sock输入以下SQL语句,创建一个具有root权限的用户(admin)和密码(12345678):GRANTALLPRIVILEGESON*.*TO´admin´@´localhost´IDENTIFIEDBY´12345678´;GRANTALLPRIVILEGESON*.*TO´admin´@´´IDENTIFIEDBY´12345678´;为root帐户设置初始密码#/opt/mysql/bin/mysqladmin-urootpassword´new-password´删除本机匿名连接的空密码帐号/opt/mysql/bin/mysql-uroot-p´new-password´mysql>usemysql;//选择系统数据库mysqlmysql>selectHost,User,Passwordfromuser;//查看所有用户mysql>deletefromuserwherepassword="";mysql>flushprivileges;mysql>selectHost,User,Passwordfromuser;//确认密码为空的用户是否已全部删除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不能进行servicemysqlrestart的话,出现mysql:unrecognizedservice需要将/opt/mysql/init.d/mysql复制到/etc/rc.d/init.d/则可以servicemysqlrestart了。查看开机启动项chkconfig–list将mysql加入开机启动项chkconfig--addmysql。打开mysql远程连接打开MySQL远程访问权限1.以root帐户登陆MySQL

MySQL-uroot-p123456

注:123456为root用户的密码。2.创建远程登陆用户并授权grantallPRIVILEGESondiscuz.*toted@'23'identifiedby'123456';

注:上面的语句表示将discuz数据库的所有权限授权给ted这个用户,允许ted用户在23这个IP进行远程登陆,并设置ted用户的密码为123456。改表法

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql"数据库里的"user"表里的"host"项,从"localhost"改称"%"

mysql-uroot-p

mysql>usemysql;

mysql>updateusersethost='%'whereuser='root';

mysql>selecthost,userfromuser;

如果还不行,就关闭防火墙如果你忘记了MySQL密码,如何重置它呢?下面是错误答案:首先停止MySQL服务,然后使用skip-grant-tables参数启动它:shell>/etc/init.d/mysqlstopshell>mysqld_safe–skip-grant-tables&此时无需授权就可以进入到MySQL命令行,使用SQL重置MySQL密码:UPDATEmysql.userSETPassword=PASSWORD('…')WHEREUser='…'ANDHost='…';FLUSHPRIVILEGES;为什么说它是错误答案?因为在单纯使用skip-grant-tables参数启动服务后,除非数据库服务器屏蔽了外网访问,否则除了自己,其它别有用心的人也可能访问数据库,尽管重置密码所需的时间很短,但俗话说不怕贼偷就怕贼惦记着,任何纰漏都可能酿成大祸。下面是正确答案:关键点是:在使用skip-grant-tables参数的同时,还要加上skip-networking参数:shell>mysqld_safe–skip-grant-tables–skip-networking&接着使用SQL重置密码后,记得去掉skip-networking,以正常方式重启MySQL服务:shell>/etc/init.d/mysqldrestart上面的方法需要重启两次服务,实际上还能更优雅一点,重启一次即可:首先需要把用到的SQL语句保存到一个文本文件里(/path/to/init/file):UPDATEmysql.userSETPassword=PASSWORD('…')WHEREUser='…'ANDHost='…';FLUSHPRIVILEGES;接着使用init-file参数启动MySQL服务,shell>/etc/init.d/mysqlstopshell>mysqld_safe–init-file=/path/to/init/file&此时,密码就已经重置了,最后别忘了删除文件内容,免得泄露密码。提示:本文用到的参数都是通过命令行mysqld_safe传递的,实际上也可以通过f.mysql参数配置[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下数据导入到linux导出方式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是表示导出存储过程;-R是表示导出函数如上便可将windows下的数据(包括存储过程和函数)到处到sql中。然后通过cuteftp上载到linux下进行导入。也可以重新执行脚本进行导入,将所有脚本放在linux下直接进行执行。三种导入方式:#mysqldump–uroot–poperator_3n</…/operator_3n_backup_20120209.sqlmysql>sourceoperator_3n_backup_20120209.sqlmysql>\.operator_3n_backup_20120209.sqlLinux基准测试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优化如何使用SQLProfiler性能分析器mysql的sql性能分析器主要用途是显示sql执行的整个过程中各项资源的使用情况。分析器可以更好的展示出不良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)

默认情况下profiling的值为0表示MySQLSQLProfiler处于OFF状态,开启SQL性能分析器后profiling的值为1.

通过sql性能分析器,我们来对比一下下列语句前后2次执行过程的差异,对我们了解sql的详细执行过程是非常有帮助的。

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次执行count语句的差别,SHOWPROFILEFORQUERY27展现的是第一次count统计的执行过程,包含了Openingtables、Tablelock等操作。而SHOWPROFILEFORQUERY28展示了第二次count统计的执行过程,第二次count直接从查询缓存中返回count统计结果,通过对比2次统计的总执行时间发现,缓存读的速度接近物理读的10倍。通过使用SQL性能分析器可以帮助我们对一些比较难以确定性能问题的SQL进行诊断,找出问题根源。如果不带for参数则指列出最后一条语句的profile信息:showprofilecpu,blockioforquery1;完成之后需要SETprofiling=0将其值为关闭。mysql性能优化工具“tuner-primer”wget/MySQL/tuning-primer.sh

chmod+xtuning-primer.sh

cp./tuning-primer.sh/bin结果报告:

会用几种颜色标记:

蓝色:总指标

绿色:表示此参数还可以

红色:表示此参数有严重问题

深红色:表示有问题参数

黄色:一些信息提示

而且还有警告:Mysql技巧大全Mysql区分奇偶数SELECT*FROMdataWHERERecNomod2=1这个是显示奇数列.SELECT*FROMdataWHERERecNo&1这个是显示奇数列.SELECT*FROMdataWHERERecNomod2=0这个是显示偶数列.判断某个列是否存在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()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为NULL,则结果为NULL。函数会忽略任何分隔符参数后的NULL值。mysql>SELECTCONCAT_WS(',','Firstname','Secondname','LastName');->'Firstname,Secondname,LastName'mysql>SELECTCONCAT_WS(',','Firstname',NULL,'LastName');->'Firstname,LastName'CONCAT_WS()不会忽略任何空字符串。(然而会忽略所有的NULL)。附录Yum重新安装使用redhat系统在线安装时提示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位系统的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.下载更新源,并存放在系统目录中

[root@localhost~]#wget/soft/lemp/CentOS-Base.repo[root@localhost~]#mvCentOS_Base.repo/etc/yum.repos.d/CentOS-Base.repo

4.生成缓存并进行安装[root@localhost~]#yummakecache

[root@localhost~]#yuminstallgcc-c++,如果中途出错,可先安装常见错误集锦1.mysqldump:Goterror:1556:Youcan'tuselockswithlogtables.whenusing使用时出现mysqldump-uroot

-A>all_database.sql时出现mysqldump:Goterror:1556:Youcan'tuselockswithlogtables因为锁表时报错加上--lock-tables=0参数,不锁表,即OK了。mysqldump-uroot--lock-tables=0-A>all_database.sql通过showstatus来优化MySQL数据库关键字:mysql1,查看MySQL服务器配置信息1.mysql>showvariables;2,查看MySQL服务器运行的各种状态值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.+++配置中关闭了记录慢查询(最好是打开,方便优化),超过2秒即为慢查询,一共有279条慢查询4,连接数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.+++设置的最大连接数是500,而响应的连接数是498max_used_connections/max_connections*100%=99.6%(理想值_85%)5,key_buffer_sizekey_buffer_size是对MyISAM表性能影响最大的一个参数,不过数据库中多为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个请求在内存中没有找到直接从硬盘读取索引,计算索引未命中缓存的概率:key_cache_miss_rate=Key_reads/Key_read_requests*100%=0.27%需要适当加大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)数,Key_blocks_used表示曾经用到的最大的blocks数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.+++每次创建临时表,Created_tmp_tables增加,如果是在磁盘上创建临时表,Created_tmp_disk_tables也增加,Created_tmp_files表示MySQL服务创建的临时文件文件数: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表示打开表的数量,Opened_tables表示打开过的表数量,如果Opened_tables数量过大,说明配置中table_cache(5.1.3之后这个值叫做table_open_cache)值可能太小,我们查询一下服务器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,进程使用情况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服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。Threads_created表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器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:缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSHQUERYCACHE会对缓存中的碎片进行整理,从而得到一个空闲块。Qcache_free_memory:缓存中的空闲内存。Qcache_hits:每次查询在缓存中命中时就增大Qcache_inserts:每次插入一个查询时就增大。命中次数除以插入次数就是不中比率。Qcache_lowmem_prunes:缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的free_blocks和free_memory可以告诉您属于哪种情况)Qcache_not_cached:不适合进行缓存的查询的数量,通常是由于这些查询不是SELECT语句或者用了now()之类的函数。Qcache_queries_in_cache:当前缓存的查询(和响应)的数量。Qcache_total_blocks:缓存中块的数量。我们再查询一下服务器关于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:当有其他客户端正在对MyISAM表进行写操作时,如果查询在querycache中,是否返回cache结果还是等写操作完成再读表获取结果。query_cache_min_res_unit的配置是一柄”双刃剑”,默认是4KB,设置值大对大数据查询有好处,但如果你的查询都是小数据查询,就容易造成内存碎片和浪费。查询缓存碎片率=Qcache_free_blocks/Qcache_total_blocks*100%如果查询缓存碎片率超过20%,可以用FLUSHQUERYCACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,如果你的查询都是小数据量的话。查询缓存利用率=(query_cache_size–Qcache_free_memory)/query_cache_size*100%查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且Qcache_lowmem_prunes>50的话说明query_cache_size可能有点小,要不就是碎片太多。查询缓存命中率=(Qcache_hits–Qcache_inserts)/Qcache_hits*100%示例服务器查询缓存碎片率=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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论