search 2013 adfgs

在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣的朋友们有所帮助。 这是 MySQL数据库性能优化专题 系列的第一篇文章:MySQL 数据库性能优化之缓存参数优化 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO。本文先从 MySQL 数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化: query_cache_size/query_cache_type (global) Query cache 作用于整个 MySQL Instance,主要用来缓存 MySQL 中的 ResultSet,也就是一条SQL语句执行的结果集,所以仅仅只能针对select语句。当我们打开了 Query Cache 功能,MySQL在接受到一条select语句的请求后,如果该语句满足Query Cache的要求(未显式说明不允许使用Query Cache,或者已经显式申明需要使用Query Cache),MySQL 会直接根据预先设定好的HASH算法将接受到的select语句以字符串方式进行hash,然后到Query Cache 中直接查找是否已经缓存。也就是说,如果已经在缓存中,该select请求就会直接将数据返回,从而省略了后面所有的步骤(如 SQL语句的解析,优化器优化以及向存储引擎请求数据等),极大的提高性能。 当然,Query Cache 也有一个致命的缺陷,那就是当某个表的数据有任何任何变化,都会导致所有引用了该表的select语句在Query Cache 中的缓存数据失效。所以,当我们的数据变化非常频繁的情况下,使用Query Cache 可能会得不偿失。 Query Cache的使用需要多个参数配合,其中最为关键的是 query_cache_size 和 query_cache_type ,前者设置用于缓存 ResultSet 的内存大小,后者设置在何场景下使用 Query Cache。在以往的经验来看,如果不是用来缓存基本不变的数据的MySQL数据库,query_cache_size 一般 […]

, ,

上周受邀于 IT168,在 2012年度的 DTCC 大会上做了一个小的主题分享,内容主要是最近几年在 MySQL 数据库的性能调优过程中积累的一点点经验总结,希望能对大家有用。 其中部分内容在之前的 第二届华东地区数据库大会 上已经有过分享,这次是在当时分享内容的基础上增加了硬件和系统层面的内容,同时根据听众反馈对原有内容进行了部分优化改进。 以下就是这次分享的 PPT 内容(有更新): MySQL性能调优最佳实践 View more presentations from Sky Jian

, ,

这个月11号应 蝎子 同学和 ThinkInLamp 的邀请,在上海光大会展中心参加了由 ThinkInLamp 社区组织的 第二届华东地区数据库大会,并做了一个题为“浅谈MySQL数据库优化”的主题分享交流。 考虑到参会人员大多是一线的技术工程师,而且还有很多是开发人员,所以内容更偏重于一些指导性的原则,会后将 PPT 格式稍作了调整,这里再发出来希望对感兴趣的朋友有所帮助。 浅谈 MySQL 性能调优 View more presentations from Sky Jian

,

最近看到一个比较全面的MySQL优化的PPT,不敢独享,特放上来与大家分享。 注:版权所有: Yoshinori Matsunobu Linux and H/W optimizations for MySQL View more presentations from Yoshinori Matsunobu

, ,

最近很多朋友反馈之前开发的 myperf 工具自从增加了 snap 和 report 两个功能升级之后使用起来比以前复杂了,不仅参数选项增加了,还多了一个配置文件,而且还要创建数据库,不是很明白如何使用了。 为了让大家使用起来更方便容易,这里做一个简单的介绍。 文件组成 myperf myperf工具主程序,可执行python文件 myperf.cnf myperf工具的配置文件,用来存放各种配置项以减少命令行输入 myperf.sql myperf工具用来存放性能数据的Schema结构创建文件,如果需要使用snap和report功能,就必须要通过此文件创建好Schema用来存放性能数据。当然,如果一直只是使用top模式,那就不需要使用了 功能组成 top 类似于Linux/Unix 下最常用最基本的性能查看工具 top 类似,实时刷新展示数据库中的各项核心性能指标信息 snap 收集数据库当前各项性能状态数据并存储在数据库中,用于性能分析调优,类似于 Oracle 的 Statspack 的 snapshot功能,目前收集的信息主要是 global status,如果是 MySQL5.5,还会手机Performance Schema 中的部分信息 report 和上面的snap是相辅相成的,主要是对snap存储的性能数据进行分析,获得性能报告,类似于 Oracle 的 Statspack 的 report 功能。当然,由于数据来源有限,和 Oracle Statspack 相比,还有很大的差距 由于配置文件对于程序运行比较重要,所以这里对配置文件再单独介绍一下。myperf 配置文件模仿 MySQL 的配置文件,也将配置项进行了分组,目前的3个分组分别如下: main 用来配置与数据库连接无关的全局控制参数,如interval,mode,event,session等 source 用来配置被监控的源数据库的连接信息 target 用来配置存放监控数据的目标数据库连接信息,由于需要存储性能数据,所以这里的配置中还会有一个用来指定存放性能数据的database的参数项 最后,有个好消息宣布,那就是 […]

, , , ,