4. 什么是 MySQL MySQL 是一个小型关系型数据库管理系统,开发者为瑞典 MySQL AB 公司。目前 MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。 MySQL 官方网站: http://www.mysql.com
5. MySQL 历史 1979 年, 报表工具,数据引擎 1996 年, MySQL 1.0 (3.11.1) 发布,支持 SQL 2000 年,成立 MySQL AB 公司 2008 年 1 月, Sun 公司以 10 亿美元收购 MySQL AB 公司 2009 年 4 月, Oracle 公司以 74 亿美元收购 Sun 公司
26. 通常硬件( CPU 、内存、磁盘、网络等 )是优化的最佳入口, 使用好的硬件,更快的硬盘、大内存、多核 CPU ,专业的存储服务器( NAS 、 SAN ) 客户端与服务器在一个高速的局域网内 通常,新版本的效率不如旧版本,不过可以利用新版本的新功能从另一方面得到性能上的提升 设计合理的架构,如果访问 MySQL 比较 频繁,建议应用 Master/Slave 读写分离;数据库分表、数据库切片(分布式),也考虑使用相应缓存服务帮助 MySQL 缓解访问压力 系统优化
27. 配置合理的 MySQL 服务器,尽量在应用本身达到一个 MySQL 最合理的使用 针对 MyISAM 或 InnoDB 引擎进行不同定制性配置 针对不同的应用情况进行合理配置 针对 my.cnf 进行配置,后面设置是针对内存为 2G 的服务器进行的合理设置 配置优化 MySQL 配置原则
28. 配置优化 公共选项 选项 缺省值 推荐值 说明 max_connections 100 1024 MySQL 服务器同时处理的数据库连接的最大数量 query_cache_size 0 ( 不打开) 16M 查询缓存区的最大长度,按照当前需求,一倍一倍增加,本选项比较重要 sort_buffer_size 512K 16M 每个线程的排序缓存大小,一般按照内存可以设置为 2M 以上,推荐是 16M ,该选项对排序 order by , group by 起作用 record_buffer 128K 16M 每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区,可以设置为 2M 以上 table_cache 64 512 为所有线程打开表的数量。增加该值能增加 mysqld 要求的文件描述符的数量。 MySQL 对每个唯一打开的表需要 2 个文件描述符。
36. 编写高效的 SQL 能够快速缩小结果集的 WHERE 条件写在前面,如果有恒量条件, 也尽量放在前面 尽量避免使用 GROUP BY 、 DISTINCT 、 OR 、 IN 等语句的使用, 避免使用联表查询和子查询,因为将使执行效率大大下降 能够使用索引的字段尽量进行有效的合理排列,如果使用了 联合索引,请注意提取字段的前后顺序 如果在 SQL 里使用了 MySQL 部分自带函数,索引将失效,同时将无法 使用 MySQL 的 Query Cache ,比如 LEFT(), SUBSTR(), TO_DAYS() DATE_FORMAT(), 等,如果使用了 OR 或 IN ,索引也将失效 使用 Explain 语句来帮助改进我们的 SQL 语句
37. MySQL 书籍 / 网站分享 《MySQL 核心技术手册(第二版) 》 《 高性能 MySQL( 第二版 )》 MySQL 官方手册 :http://dev.mysql.com/doc/refman/5.1/en/ MySQL Performance Blog :http://www.mysqlperformanceblog.com/
39. 基本内容 《 MySQL 核心技术手册》这本书,该书在内容编排上首先从 MySQL 的历史讲起,介绍了 MySQL 的价值、使用许可协议及邮件列表和相关参考书籍,还介绍了 MySQL 在不同操作系统上地安装、配置以及测试方法,如何创建数据库,以及如何操纵表中的数据。紧接着介绍了 MySQL 的各种语句和函数,最后介绍了如何使用 C 、 Perl 和 PHP 语言创建应用程序。本书是为 MySQL 用户、数据库管理员和开发人员准备的一本综合性的参考书。它包含了 MySQL (包括 MySQL5.0 和 5.1 版本的详尽信息)。