- 浏览: 1547900 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (532)
- 软件设计师 (7)
- PSP (5)
- NET MD (9)
- Hibernate (8)
- DIY (51)
- Work (43)
- GAME (24)
- 未分类 (44)
- iPod (6)
- MySQL (39)
- JSP (7)
- 日语能力考试 (36)
- 小说 (4)
- 豆包网 (23)
- 家用电脑 (7)
- DB2 (36)
- C/C++ (18)
- baby (9)
- Linux (13)
- thinkpad (23)
- OA (1)
- UML (6)
- oracle (24)
- 系统集成 (27)
- 脑梗塞 (6)
- 车 (8)
- MainFrame (8)
- Windows 7 (13)
- 手机 (8)
- git (12)
- AHK (2)
- COBOL (2)
- Java (9)
最新评论
-
安静听歌:
... ...
UUID做主键,好还是不好?这是个问题。 -
lehehe:
http://www.haoservice.com/docs/ ...
天气预报 -
lehehe:
[url http://www.haoservice.com/ ...
天气预报 -
liubang201010:
监控TUXEDO 的软件推荐用这个,专业,权威.并能提供报警和 ...
(转载)Tuxedo中间件简介 -
tinkame:
Next[j] =-1 当j=0时;=Max{k|0<k ...
KMP字符串模式匹配详解
LAMP 系统性能调优,第 3 部分: MySQL 服务器调优利用服务器的几个调优技巧,让 MySQL 服务器飞速运行 |
级别: 中级 Sean A. Walberg (sean@ertw.com), 高级网络工程师 2007 年 7 月 30 日 如今,开发人员不断地开发和部署使用 LAMP(Linux®、Apache、MySQL 和 PHP/Perl)架构的应用程序。但是,服务器管理员常常对应用程序本身没有什么控制能力,因为应用程序是别人编写的。这份 共三部分的系列文章 将讨论许多服务器配置问题,这些配置会影响应用程序的性能。本文是本系列文章的第三部分,也是最后一部分,将重点讨论为实现最高效率而对数据库层进行的调优。<!----><!----><!----> 有 3 种方法可以加快 MySQL 服务器的运行速度,效率从低到高依次为:
替换有问题的硬件通常是我们的第一考虑,主要原因是数据库会占用大量资源。不过这种解决方案也就仅限于此了。实际上,您通常可以让中央处理器(CPU)或磁盘速度加倍,也可以让内存增大 4 到 8 倍。 第二种方法是对 MySQL 服务器(也称为 最好的方法是确保查询已经进行了优化。这意味着对表应用了适当的索引,查询是按照可以充分利用 MySQL 功能的方式来编写的。尽管本文并没有包含查询调优方面的内容(很多著作中已经针对这个主题进行了探讨),不过它会配置 虽然已经为这些任务指派了次序,但是仍然要注意硬件和
在一个 SQL 服务器中,数据表都是保存在磁盘上的。索引为服务器提供了一种在表中查找特定数据行的方法,而不用搜索整个表。当必须要搜索整个表时,就称为表扫描。通常来说,您可能只希望获得表中数据的一个子集,因此全表扫描会浪费大量的磁盘 I/O,因此也就会浪费大量时间。当必须对数据进行连接时,这个问题就更加复杂了,因为必须要对连接两端的多行数据进行比较。 当然,表扫描并不总是会带来问题;有时读取整个表反而会比从中挑选出一部分数据更加有效(服务器进程中查询规划器用来作出这些决定)。如果索引的使用效率很低,或者根本就不能使用索引,则会减慢查询速度,而且随着服务器上的负载和表大小的增加,这个问题会变得更加显著。执行时间超过给定时间范围的查询就称为慢速查询。 您可以配置 清单 1. 启用 MySQL 慢速查询日志
这三个设置一起使用,可以记录执行时间超过 5 秒和没有使用索引的查询。请注意有关 阅读慢速查询日志最好是通过
很多 LAMP 应用程序都严重依赖于数据库,但却会反复执行相同的查询。每次执行查询时,数据库都必须要执行相同的工作 —— 对查询进行分析,确定如何执行查询,从磁盘中加载信息,然后将结果返回给客户机。MySQL 有一个特性称为查询缓存,它将(后面会用到的)查询结果保存在内存中。在很多情况下,这会极大地提高性能。不过,问题是查询缓存在默认情况下是禁用的。 将 在启用查询缓存之后,重要的是要理解它是否得到了有效的使用。MySQL 有几个可以查看的变量,可以用来了解缓存中的情况。清单 2 给出了缓存的状态。 清单 2. 显示查询缓存的统计信息
这些项的解释如表 1 所示。 表 1. MySQL 查询缓存变量
通常,间隔几秒显示这些变量就可以看出区别,这可以帮助确定缓存是否正在有效地使用。运行 使用非常大的查询缓存,期望可以缓存所有东西,这种想法非常诱人。由于
您可以在 清单 3. MySQL 资源设置
连接最大个数是在第一行中进行管理的。与 Apache 中的 第 2 行告诉 最后一行是一个安全的方法。如果一个主机在连接到服务器时有问题,并重试很多次后放弃,那么这个主机就会被锁定,直到
MySQL 支持超过 100 个的可调节设置;但是幸运的是,掌握少数几个就可以满足大部分需要。查找这些设置的正确值可以通过 MySQL 可调节设置可以应用于整个 每个表都可以表示为磁盘上的一个文件,必须先打开,后读取。为了加快从文件中读取数据的过程, 清单 4. 显示打开表的活动
清单 4 说明目前有 5,000 个表是打开的,有 195 个表需要打开,因为现在缓存中已经没有可用文件描述符了(由于统计信息在前面已经清除了,因此可能会存在 5,000 个打开表中只有 195 个打开记录的情况)。如果 与表的缓存类似,对于线程来说也有一个缓存。 清单 5 显示如何确定是否缓存了足够的线程。 清单 5. 显示线程使用统计信息
此处重要的值是 关键字缓冲区保存了 MyISAM 表的索引块。理想情况下,对于这些块的请求应该来自于内存,而不是来自于磁盘。清单 6 显示了如何确定有多少块是从磁盘中读取的,以及有多少块是从内存中读取的。 清单 6. 确定关键字效率
临时表可以在更高级的查询中使用,其中数据在进一步进行处理(例如 清单 7. 确定临时表的使用
每次使用临时表都会增大 下面这些设置针对于每个会话。在设置这些数字时要十分谨慎,因为它们在乘以可能存在的连接数时候,这些选项表示大量的内存!您可以通过代码修改会话中的这些数字,或者在 my.cnf 中为所有会话修改这些设置。 当 MySQL 必须要进行排序时,就会在从磁盘上读取数据时分配一个排序缓冲区来存放这些数据行。如果要排序的数据太大,那么数据就必须保存到磁盘上的临时文件中,并再次进行排序。如果 清单 8. 显示排序统计信息
如果 MySQL 也会分配一些内存来读取表。理想情况下,索引提供了足够多的信息,可以只读入所需要的行,但是有时候查询(设计不佳或数据本性使然)需要读取表中大量数据。要理解这种行为,需要知道运行了多少个 清单 9. 确定表扫描比率
尽管在了解具体设置时, 大部分系统管理员都非常熟悉
搜集
本文介绍了对 MySQL 进行调优的一些基础知识,并对这个针对 LAMP 组件进行调优的 3 部分系列文章进行了总结。调优很大程度上需要理解组件的工作原理,确定它们是否正常工作,进行一些调整,并重新评测。每个组件 —— Linux、Apache、PHP 或 MySQL —— 都有各种各样的需求。分别理解各个组件可以帮助减少可能会导致应用程序速度变慢的瓶颈。 学习
获得产品和技术
讨论
|
发表评论
-
MySQL配置文件my.cnf 例子最详细翻译
2009-07-20 11:58 1757http://www.blogjava.net/hunte ... -
MySQL :: @@Rowcount in MySQL
2009-03-02 15:39 2257@@Rowcount in MySQL? Posted ... -
MYSQL中删除重复记录的方法
2009-02-26 12:23 0MYSQL中删除重复记录的方法 2008 ... -
使用 MYSQLBINLOG 来恢复数据。
2009-02-26 12:21 0使用 MYSQLBINLOG 来恢复数据。 20 ... -
13.2.3. InnoDB Startup Options and System Variable
2009-02-20 13:37 1272http://dev.my ... -
mysql innodb 配置详解
2009-02-20 11:01 3593加为好友发送私信在线聊天 -
20.3.9 关于死锁 深入浅出MySQL——数据库开发、优化与管理维护
2009-02-20 10:50 3167深入浅出MySQL——数据库开发、优化与管理维护 回 ... -
mysql的临时表不支持自连接
2009-02-18 13:32 2372TEMPORARY TABLE ProblemsThe fol ... -
windows 下安装两个MySQL收藏
2009-02-03 16:28 2402由于两个MySQL进程需要不同的配置文件,以下所有操作均是在W ... -
1.4.1. What's New in MySQL 5.1
2009-02-03 16:25 11901.4.1. What's New in My ... -
查看mysql版本的四种方法
2009-02-02 10:57 9771:在终端下:mysql -V。 以下 ... -
Server SQL Modes
2009-02-01 11:06 14415.1.7. Server SQL Modes ... -
MySQL中的各种JOIN(CROSS JOIN, INNER JOIN, LEFT [OUTER]
2009-01-13 14:50 6228MySQL中的各种JOIN(CROSS JOIN, I ... -
[转]SQL Server 2000执行计划成本(5/5)
2009-01-09 15:26 1208[转]SQL Server 2000执行计划成本(5/5) ... -
SQL Server 2000执行计划成本(4/5)
2009-01-09 15:25 1110[转]SQL Server 2000执行计划成本(4/5) ... -
[转]SQL Server 2000执行计划成本(3/5)
2009-01-09 15:23 1540[转]SQL Server 2000执行计划成本(3/5) ... -
SQL Server 2000执行计划成本(1/5)
2009-01-09 14:52 1651[转]SQL Server 2000执行计划成本(1/5) ... -
浅谈MySQL数据库优化
2009-01-09 14:46 1352浅谈MySQL数据库优化 [收藏此页] [打印] ... -
sql server支持create table as ...建表么
2009-01-09 11:52 9051sql server支持create table as .. ... -
SQL Server如何识别自动创建的索引
2009-01-08 15:57 1323SQL Server如何识别自动创建的索引 http://w ...
相关推荐
MySQL 服务器调优 MySQL 服务器调优是提高 MySQL 服务器性能的重要手段。通过对服务器的调优,可以提高 MySQL 服务器的运行速度和效率。本文将讨论三种方法来加快 MySQL 服务器的运行速度:替换有问题的硬件,对 ...
首先,MySQL服务器调优主要是调整mysqld进程的配置,以优化内存分配和处理负载。在硬件满足一定基础性能的情况下,合理设置内存分配可以显著提升处理速度。例如,可以通过增加query_cache_size参数来启用和调整查询...
### MySQL性能调优与架构设计的关键知识点 #### 一、MySQL概述 - **MySQL Server简介** - **定义**: MySQL是由MySQL AB公司(现已被Oracle收购)开发的一款开放源代码的关系型数据库管理系统(RDBMS)。 - **特点*...
MySQL性能调优参数 MySQL 是一个广泛使用的开源关系型数据库管理系统,在实际应用中,如何提高 MySQL 的性能是一个关键的问题。本文将总结 MySQL 性能调优参数,涵盖 Innodb 相关参数、连接参数、缓存参数、日志...
- **功能模块**:MySQL服务器包含多个功能模块,如存储引擎、查询解析器、执行器等。 - **模块协同工作**: - 存储引擎:负责数据的物理存储和访问,如InnoDB、MyISAM等。 - 查询解析器:解析SQL语句,生成执行...
MySQL性能调优与架构设计是IT领域中一个关键的话题,特别是在大数据时代,高效稳定的数据库管理是企业业务的基础。本文将深入探讨如何优化MySQL的性能,以及如何设计高可用的数据库架构,以实现低成本且高性能的...
《MySQL性能调优与架构设计》是简朝阳的一本专著,主要针对数据库管理员、开发人员和系统架构师,深入探讨了如何优化MySQL数据库的性能并进行合理的架构设计。书中涵盖了多个关键领域,旨在帮助读者提升数据库系统的...
如今,开发人员不断地开发和部署使用 LAMP(Linux?...但是,服务器管理员常常对应用程序本身没有什么控制能力,因为应用程序是别人编写的。这份 共三部分的系列文章将讨论许多...有3种方法可以加快MySQL服务器的运行速度
MySQL 性能调优是指通过优化 MySQL 服务器的配置和参数来提高数据库的性能。MySQL 性能调优的方法有多种,包括优化服务器参数、优化查询语句、优化索引等。 在 MySQL 性能调优中,需要考虑到多个因素,包括服务器的...
MySQL性能调优是一个复杂而重要的任务,涉及到多个层面,包括SQL查询优化、索引管理、存储引擎选择、架构设计等。下面将详细讲解这些关键点。 首先,SQL查询优化是性能提升的基础。优化SQL语句可以减少数据库的计算...
1. MySQL自带工具:如EXPLAIN分析SQL执行计划,SHOW STATUS和SHOW VARIABLES查看服务器状态。 2. 第三方工具:如Percona Toolkit、pt-query-digest进行性能分析和优化建议。 3. 监控系统:使用Nagios、Zabbix等...
### MySQL性能调优工具介绍与应用 MySQL作为全球最广泛使用的开源关系型数据库之一,在企业级应用中的地位不可动摇。为了确保MySQL能够高效稳定地运行,掌握一系列性能调优工具至关重要。本文将详细介绍多种MySQL...
2. **SQL解析**:MySQL服务器接收到SQL命令后,首先对其进行解析,确定语法是否正确,并生成抽象语法树(AST)。 3. **优化器处理**:根据AST生成初步的执行计划,然后通过优化器进行优化,生成最终的执行计划。 4. ...
### MySQL性能调优与架构设计知识点概述 #### 一、MySQL基本介绍 ##### 1.1 MySQL Server简介 - **1.1.1 什么是MySQL** - MySQL是一款由MySQL AB公司开发的开源数据库管理系统,后来被Sun Microsystems收购。它是...
5. **内存配置优化**:调整MySQL服务器的内存使用,如缓冲池大小、查询缓存等,可以减少磁盘I/O,提高响应速度。 6. **查询缓存**:虽然在MySQL 8.0中已废弃,但在旧版本中,合理利用查询缓存可以显著提升重复查询...
3. 负载均衡:使用负载均衡器,如MySQL Proxy或HAProxy,可以动态分配连接到不同的数据库服务器,提高系统的整体处理能力。 三、目录结构 本书的目录通常会涵盖以下内容: 1. MySQL基础:介绍MySQL的基本概念、...
10. **性能调优工具**:使用工具如MySQLTuner和Percona Toolkit对服务器配置进行评估和调整,自动化部分调优工作。 11. **InnoDB存储格式**:了解InnoDB的新特性,如自适应哈希索引、压缩表和空间数据类型,以及...