忽略mysql的key cache hit ratio
Why you should ignore MySQL’s key cache hit ratio
http://www.mysqlperformanceblog.com/2010/02/28/why-you-should-ignore-mysqls-key-cache-hit-ratio/
不要相信mysql的key cache hit ratio:
key cache hit ratio = 1 - key_reads / key_read_requests
key_reads:从磁盘中读块的数量
key_read_requests:从缓存中请求读块的数量
不好的建议是:
(1)你应当注意这个cache hit ratio
(2)并且你应当根据这个比率设置你的key_buffer_size的大小
以上的建议有两个问题:
(1)这个比率是无量纲,即你不知道key_read_requests和key_reads是处于什么数量级别的,因此你无法评估这个值
(2)它没有时间因素,即这个比值不知道其时间跨度,也无法评估这个值的优劣
如果要确实使用这个值来评估优劣,那需要一些假定:
(1)key_read需对应一次磁盘I/O的物理读取
(2)从磁盘中找此key和从缓存中找此key是更慢的
(3)一个key_read是一次随机的磁盘存取
基于以上几点:则需要减少key_reads的数量
key_cache_miss_rate = key_reads / uptime
怎么样设置key_buffer_size大小呢?
可以设置一个很大的key_buffer_size,然后插入一些数据,执行一些查询,每隔一段时间测量key_buffer_size的使用大小,绘制曲线图,取其最高点的值作为key_buffer_size的大小。
相关文档:
PHP中分页肯定会使用到MySQL的limit,大部分对类似"select * from title where uid =** order by id desc limit m,n"很熟悉,也不是全部都能看出里面有什么不对,可是当是在大数据量下操作呢,比如百万类似"select * from title where uid =177 order by id desc limit 1234567,20"就会发现sql执行的时间明 ......
年初的时候一直在做一个网站MSSQL2000->MySQL5的迁移工作,因为采用了不同的程序系统,所以主要问题在数据的迁移。由于2个系统数据库结构差异非常大,不方便采取SQLSERVER里导入MYSQL的ODBC数据源的功能(也不推荐这么做,字段类型等不同点会搞死人的~),因此就在WINDOWS下自己写PHP脚本从SQLSERVER里读数据,然后按照 ......
今天在写一条sql语句的时候,用的双引号,sql语句执行错误。记的同事问我mysql语句中的单引号和双引号有区别吗?回答是没有区别。
今天特地查了查,还是有点区别的。
mysql中的一段说明:
在mysql中,使用单引号和双引号俩种表达方法是一样的,尽管使用单引号的表达方法符合ANSI-SQL/92标准。
如果在字符串里有引号,则 ......
最近,项目中用到mysql,由于数据量非常大,每天的数据量在百万级,考虑到mysql数据库处理性能以及数据属性,决定保存足够多的查询数据即可,距当前时间最久远的数据直接删除,无需进行备份。
头脑中冒出的第一个想法就是,能否利用mysql中的触发器,检查数据表大小,如果超过预设长度,则删除部分数据。
CREATE TRIGGER ......
A Practical Look at the MySQL Query Cache
http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html
数据库缓存策略:
(1)缓存经常被使用的数据
(2)缓存经常执行的SQL和存储过程代码
(3)缓存数据库元数据信息,包括:对象结构缓存、安全信息等
mysql引擎所使用的缓存:
(1)myisam:key b ......