Pages: 18/48 First page Previous page 13 14 15 16 17 18 19 20 21 22 Next page Final page [ View by Articles | List ]

Mysql的查询缓存区query cache

[不指定 2009/02/16 17:36 | by askwan ]
     查询缓存区(query cache)是Mysql 4.0版本后引入的一项功能,本意是提高SQL查询性能,即把某些SQL查询命令的结果存放在内存里,当其他用户再次执行一条完全相同的查询命令时,Mysql将会把缓存在内存里的查询结果直接发送给他,而不用再对数据库表进行查询。
   但是并不是说查询缓存区就只有优点,而没有缺点,我举个例子,一个项目里如果是update, delete ,insert等数据库操作比select操作更多,那我想觉得这时候就不适合开启查询缓存区的功能,为什么呢,原因很简单,查询缓存区缓存的是查询的结果,如果数据库表内容经常的改变,那很多查询结果多必须从查询缓存区里删除掉,特别是内存较小的系统,这样的话,只会加剧数据库的负担。
  基于这一点,用不用开启查询缓存区的功能,查阅不少文档后,总结几条如下:

1. 就是查询缓存区适合select 操作较多,而insert update delete操作较少的情况,并且重复的SQL查询越多,效果越好。

2. 就是SQL查询语句命令必须严格的相同,包括字母大小写,空格,举个例子
有这么两行查询语句,

select username,email from  members order by username limit 10;


Select username,email from  members order by username limit 10;


咋看怎么长的都一样,而且查询的结果也是一样的,是的,没错,除了“select”和“Select”一个字母大小写的不同外,其他的都一样,但是在Mysql内部,SQL分析器却会把这两条长的一样的语句当作两条不同的语句,mysql的确很傻很天真,嘿嘿,
这里还要注意的是mysql对数据库和数据表是区分大小写的,而对数据列是不区分大小写的。

3.就是select 命令里不能含有一些特殊的函数,比如CUDATE(),NOW(),有这些函数在里面,查询缓存区几乎不起作用,只会给系统带来额外开销。


查询缓存区的启用

   如果 query_cache_size=0,那么当前没有开启查询缓存区
在my.cnf的[mysqld]配置段
开启查询缓存区有几个相关项,如
query_cache_size =128M
query_cache_type = 1  (有三个值,分别是0,1,2)
qurey_cache_limit=128K;
意思是给启用查询缓存区并给查询缓存区分配128M的内存空间, 而且允许查询的结果数据必须不大于128KB大小
query_cache_type为1,表示在SQL语句里加上了SQL_NO_CACHE关键字的,强制不缓存查询结果。
query_cache_type为0,表示关闭SQL语句里的SQL_CACHE和SQL_NO_CACHE功能,也就是禁用查询缓存功能。
query_cache_type为2,表示在SQL语句里,只有包含着SQL_CACHE的查询才会进入查询缓存区。

下篇我将介绍下查询缓存区的优化方法。

------------------END------------------

Mysql监控快速指南

[不指定 2009/02/15 09:20 | by askwan ]
       Mysql作为广泛应用的数据库系统,平时运维工作中对她的监控必不可少,现在把我对Mysql数据库的监控体会写成下文,欢迎拍砖。
     无论是DBA或是SA,监控的目标都很明确,无外乎

1.快速的得到Mysql过去一段时间或者当前运行的状态
2.因硬件升级或者系统配置的改变而诊断对Mysql数据库性能影响
3.在Mysql数据库系统出现故障要能够及时收到告警
4.为日后编写运维报告提供各项数据指标供分析
5.……
想到了再做补充。而所有以上这些目的,通过各种方法和手段都可以做到。


   自从Mysql数据库系统启动并且提供服务,Mysql内部自身的一套“计数器”就开始工作,可以通过
Show Global Status , Show global variables ,Show full processlist
得到Mysql数据库系统当前各种系统变量和状态 ,并且后文介绍个各种监控工具几乎都是对这三个指令的输出
进行数据的计算和统计分析。
    

   第一把  mysqldumpslow
属于Mysql嫡系血统,Mysql自带,可以统计各个SQL慢查询 出现次数 执行的最长时间 累计总消耗时间 等待锁的时间 返回行数和返回总行数等

       第二把  mysqlsla
官方网站:http://hackmysql.com
这网站除了这个, 还share了不少其他mysql 相关的武器 ,个个强悍!

统计出来的信息非常全面 ,就不依依表述了 ,能快速定位主要问题, 强烈推荐.


      第三把  mysql-explain-slow-log
一个perl写的脚本 ;
下载:http://www.willamowius.de/mysql-tools.html
用后感觉功能就一般般.

         第四把 mysql-log-filter
与mysqldumpslow类似 ,功能相当.

        第五把 myprofi
一个php脚本
下载地址http://myprofi.sourceforge.net/
分析结果比较简洁试用.

ps:记录mysql满查询,在配置文件my.cnf中修改
long_query_time = 1
log-slow-queries = /usr/local/mysql/data/slow.log
log-queries-not-using-indexes

功能最强大还算mysqlsla, 如果再搭配其他几把刀, SQL 写的有问题的或者需要优化的语句 ,几乎可以一网打尽了 !

让nginx启用SSI支持shtml

[不指定 2009/02/04 14:53 | by askwan ]
apache下配很easy,今才发现nginx 也有内置的SSI 模块 ngx_http_ssi_module ,赞一个
配置文件开启

   ssi on;
    ssi_silent_errors on;
    ssi_types text/shtml;


这样就可以支持shtml了
Tags: , ,
Pages: 18/48 First page Previous page 13 14 15 16 17 18 19 20 21 22 Next page Final page [ View by Articles | List ]