- 浏览: 93086 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
xiaoyi829:
应该可以grzrt 写道分区表partition,能用hand ...
初识mysql插件之HandlerSocket -
grzrt:
分区表partition,能用handlersocket查询指 ...
初识mysql插件之HandlerSocket
1,硬件优化
a>内存——大内存、大内存位宽,尽量不要用SWAP;
b>硬盘——15000RPM、RAID5、raid10
c>CPU——64位、高主频、高缓存,高并行处理能力
d>网络——标配的千兆网卡足矣,尽可能在同一局域网内,尽量避免诸如防火墙策略等不必要的开销
2,架构上的优化
a>纵向拆解
最简单的一台服务同时负责web、中间件、数据库多个角色;纵向拆解后就是数据库服务器专机专用,避免额外的服务可能导致的性能下降和不稳定性;如果将数据库服务器专机专用仍然无法满足需求,可以考虑在数据库和应用服务器之间加Memcached。
b>横向拆解
主从同步、负载均衡、高可用性集群,当单个mysql数据库无法满足日益增加的需求时,可以考虑在数据库这个逻辑层面增加多台服务器,以达到稳定、高效的效果。
http://bbs.linuxtone.org/thread-5152-1-1.html
3,操作系统级别的优化
a>64位系统可以分给单个进程更多的内存、服务调优,禁用不必要启动的服务,修改文件描述符限制,留更多的资源给mysql;
b>文件系统调优,给数据仓库一个单独的文件系统,推荐使用XFS,一般效率更高、更可靠。
c>可以考虑在挂载分区时启用noatime选项。
4,数据库服务的优化
a>使用linux/bsd操作系统进行编译安装,对编译参数进行性能优化,精简不必要启用的功能
b>合适的应用程序接口。
c>保持每个表都不要太大,可以对大表做横切和纵切;比如说我要取得某ID的lastlogin,完全可以做一张只有“ID”和 “lastlog”的小表,而非几十、几百列数据的并排大表;另外对一个有1000万条记录的表做更新比对10个100万记录的表做更新一般来的要慢
d>myisam引擎,表级锁,单锁开销小,但影响范围大,适合读多写少的表,不支持事物日志;表锁定不存在死锁
e>innodb引擎,行级锁,锁定行的开销要比锁定全表要大,但影响范围小,适合写操作比较频繁的数据表;行级锁可能存在死锁。
5,my.cnf内参数的优化;
优化总原则:给mysql的资源太少,则mysql施展不开;给mysql的资源太多,可能会拖累整个OS。
a>总体资源占用的优化;
open_files_limit——mysqld可以打开的文件的数量;
max_connections——允许的并行客户端连接数目;
max_connect_errors——允许的主机的错误连接数;
table_cache——每个链接允许打开的表的数量;
max_allowed_packet——从服务器接收的包的大小;
thread_cache_size——缓存多少个待用线程;
b>具体buffer的优化
sort_buffer_size——每个线程可以分配的缓冲区的大小;
join_buffer_size——不走索引的join操作可分配的缓冲区的大小;
query_cache_size——为查询分配的缓存;
query_cache_limit——不缓存大于该限制的查询结果;
query_cache_min_res_unit——不缓存小于该限制的查询结果;
tmp_table_size——内存内的临时表表超过该限制值,则写入硬盘;
binlog_cache_size——二进制日志文件的缓存大小;
key_buffer_size——myisam引擎的索引块共用缓冲区;
read_buffer_size——为从数据表顺序读取数据的读操作保留的缓存区的长度;
innodb_additional_mem_pool_size——InnoDB用来存储数据目录信息&其它内部数据结构的内存池的大小。你应用程序里的表越多,你需要在这里分配越多的内存。
innodb_buffer_pool_size——InnoDB用来缓存它的数据和索引的内存缓冲区的大小。理论上来说是越大越好,但要注意不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.
innodb_data_file_path——innodb表空间的指定以及大小,初始表空间大一些可以减少日后自增加表空间的系统开销。
innodb_thread_concurrency——在InnoDb核心内的允许线程数量;
innodb_log_buffer_size——InnoDB用来往磁盘上的日志文件写操作的缓冲区的大小。当日志大小超过该限定时,日志会被写入磁盘,比写入内存的I/O开销大。
innodb_log_file_size——每个日志文件的大小。
max_allowed_packet——包服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小。
6,查询优化,
a>建表时表结构要合理,每个表不宜过大;在任何情况下均应使用最精确的类型。例如,如果ID列用Int是一个好主意,而用text类型则是个蠢办法;TIME列酌情使用DATE或者DATETIME。
b>索引,所有的查询都走科学的索引,单个索引命中率低时使用联合索引;
c>查询时尽量减少逻辑运算(与运算、或运算、大于小于某值的运算);
d>减少不当的查询语句,不要查询应用中不需要的列,比如说select * from 等操作。
e>减小事务包的大小;
f>将多个小的查询适当合并成一个大的查询,减少每次建立/关闭查询时的开销;
g>将某些过于复杂的查询拆解成多个小查询,和上一条恰好相反
h>建立和优化存储过程来代替大量的外部程序交互。
7,DEBUG工具:
a>vmstat——vmstat 命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息,
b>iostat——iostat命令报告CPU、硬盘等设备的输入输出情况,可能需要安装sysstat rpm包
c>top——动态显示当前系统的资源占用,和上文面的两个命令相比,top更侧重于进程。
d>free——显示内存和swap占用情况。
e>show processlist——显示当前运行或等待的线程,判断哪些查询语句总是处于等待状态
f>EXPLAIN——“EXPLAIN + SQL语句”查看索引使用情况。
g>show create table + “table_name” ——查看指定表的表结构
h> select count(distinct “row_name”) from "table_name";查看列内数据的唯一性,确定给哪一列创建索引。
i>create index 创建索引,并用 show processlist、top观察创建索引后的效果。
a>内存——大内存、大内存位宽,尽量不要用SWAP;
b>硬盘——15000RPM、RAID5、raid10
c>CPU——64位、高主频、高缓存,高并行处理能力
d>网络——标配的千兆网卡足矣,尽可能在同一局域网内,尽量避免诸如防火墙策略等不必要的开销
2,架构上的优化
a>纵向拆解
最简单的一台服务同时负责web、中间件、数据库多个角色;纵向拆解后就是数据库服务器专机专用,避免额外的服务可能导致的性能下降和不稳定性;如果将数据库服务器专机专用仍然无法满足需求,可以考虑在数据库和应用服务器之间加Memcached。
b>横向拆解
主从同步、负载均衡、高可用性集群,当单个mysql数据库无法满足日益增加的需求时,可以考虑在数据库这个逻辑层面增加多台服务器,以达到稳定、高效的效果。
http://bbs.linuxtone.org/thread-5152-1-1.html
3,操作系统级别的优化
a>64位系统可以分给单个进程更多的内存、服务调优,禁用不必要启动的服务,修改文件描述符限制,留更多的资源给mysql;
b>文件系统调优,给数据仓库一个单独的文件系统,推荐使用XFS,一般效率更高、更可靠。
c>可以考虑在挂载分区时启用noatime选项。
4,数据库服务的优化
a>使用linux/bsd操作系统进行编译安装,对编译参数进行性能优化,精简不必要启用的功能
b>合适的应用程序接口。
c>保持每个表都不要太大,可以对大表做横切和纵切;比如说我要取得某ID的lastlogin,完全可以做一张只有“ID”和 “lastlog”的小表,而非几十、几百列数据的并排大表;另外对一个有1000万条记录的表做更新比对10个100万记录的表做更新一般来的要慢
d>myisam引擎,表级锁,单锁开销小,但影响范围大,适合读多写少的表,不支持事物日志;表锁定不存在死锁
e>innodb引擎,行级锁,锁定行的开销要比锁定全表要大,但影响范围小,适合写操作比较频繁的数据表;行级锁可能存在死锁。
5,my.cnf内参数的优化;
优化总原则:给mysql的资源太少,则mysql施展不开;给mysql的资源太多,可能会拖累整个OS。
a>总体资源占用的优化;
open_files_limit——mysqld可以打开的文件的数量;
max_connections——允许的并行客户端连接数目;
max_connect_errors——允许的主机的错误连接数;
table_cache——每个链接允许打开的表的数量;
max_allowed_packet——从服务器接收的包的大小;
thread_cache_size——缓存多少个待用线程;
b>具体buffer的优化
sort_buffer_size——每个线程可以分配的缓冲区的大小;
join_buffer_size——不走索引的join操作可分配的缓冲区的大小;
query_cache_size——为查询分配的缓存;
query_cache_limit——不缓存大于该限制的查询结果;
query_cache_min_res_unit——不缓存小于该限制的查询结果;
tmp_table_size——内存内的临时表表超过该限制值,则写入硬盘;
binlog_cache_size——二进制日志文件的缓存大小;
key_buffer_size——myisam引擎的索引块共用缓冲区;
read_buffer_size——为从数据表顺序读取数据的读操作保留的缓存区的长度;
innodb_additional_mem_pool_size——InnoDB用来存储数据目录信息&其它内部数据结构的内存池的大小。你应用程序里的表越多,你需要在这里分配越多的内存。
innodb_buffer_pool_size——InnoDB用来缓存它的数据和索引的内存缓冲区的大小。理论上来说是越大越好,但要注意不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.
innodb_data_file_path——innodb表空间的指定以及大小,初始表空间大一些可以减少日后自增加表空间的系统开销。
innodb_thread_concurrency——在InnoDb核心内的允许线程数量;
innodb_log_buffer_size——InnoDB用来往磁盘上的日志文件写操作的缓冲区的大小。当日志大小超过该限定时,日志会被写入磁盘,比写入内存的I/O开销大。
innodb_log_file_size——每个日志文件的大小。
max_allowed_packet——包服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小。
6,查询优化,
a>建表时表结构要合理,每个表不宜过大;在任何情况下均应使用最精确的类型。例如,如果ID列用Int是一个好主意,而用text类型则是个蠢办法;TIME列酌情使用DATE或者DATETIME。
b>索引,所有的查询都走科学的索引,单个索引命中率低时使用联合索引;
c>查询时尽量减少逻辑运算(与运算、或运算、大于小于某值的运算);
d>减少不当的查询语句,不要查询应用中不需要的列,比如说select * from 等操作。
e>减小事务包的大小;
f>将多个小的查询适当合并成一个大的查询,减少每次建立/关闭查询时的开销;
g>将某些过于复杂的查询拆解成多个小查询,和上一条恰好相反
h>建立和优化存储过程来代替大量的外部程序交互。
7,DEBUG工具:
a>vmstat——vmstat 命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息,
b>iostat——iostat命令报告CPU、硬盘等设备的输入输出情况,可能需要安装sysstat rpm包
c>top——动态显示当前系统的资源占用,和上文面的两个命令相比,top更侧重于进程。
d>free——显示内存和swap占用情况。
e>show processlist——显示当前运行或等待的线程,判断哪些查询语句总是处于等待状态
f>EXPLAIN——“EXPLAIN + SQL语句”查看索引使用情况。
g>show create table + “table_name” ——查看指定表的表结构
h> select count(distinct “row_name”) from "table_name";查看列内数据的唯一性,确定给哪一列创建索引。
i>create index 创建索引,并用 show processlist、top观察创建索引后的效果。
发表评论
-
mysql dump 备份及脚本!
2011-06-10 13:38 1553导出多张表的时候表之间用空格分开: # mysqldump ... -
mysql备份脚本
2011-06-03 17:32 684!/bin/sh # mysql_backup.sh: bac ... -
CentOS挂载移动硬盘
2011-06-03 15:12 10971, 首先确认fuse,CentOS 5.5 带有fuse,可 ... -
MySQL 左连接 右连接
2011-06-03 14:03 869表A记录如下: aID aNum 1 ... -
[转]CentOS5 下安装与配置飞鸽传书(Ipmsg)完美完结篇
2011-05-27 10:29 1560CentOS5 下安装与配置飞鸽传书(Ipmsg)完美完结篇 ... -
深入SQL语句性能调整
2011-05-17 13:20 863本文sqlserver为例 有 ... -
windows和linux下开启mysql日志
2011-05-11 10:24 2322mysql有以下几种日志: 错误日志: -log-err 查询 ... -
MYSQL数据库设计的一点总结
2011-04-13 14:48 704选表类型: 大家都知道 ... -
mysql 清理碎片
2011-04-13 09:59 917显示你数据库中存在碎片的全部列表: select tab ... -
MySQL 建表语法
2011-04-12 14:21 8001、最简单的: CREATE TABLE t1( id ... -
排序时最快的取出尽量少的字段且索引字段
2011-04-11 15:51 833select company_albums.id,compan ... -
MySQL性能优化
2011-04-02 10:53 732作者:andyao 原文link: http://andyao ... -
Mysql Innodb 引擎优化-参数
2011-03-30 16:49 770介绍: InnoDB给MySQL提供了具有提交,回滚和崩溃 ... -
MySQL前端和后台的系统优化
2011-03-30 16:39 798本文中介绍的系统优化 ... -
MySQL配置文件my.cnf 做笔记用
2011-03-30 16:33 801MySQL配置文件my.cnf 例子最详细翻译,可以保存做笔记 ... -
测试脚本mysql_插入100万行数据
2011-03-29 16:31 1360CREATE DEFINER=`root`@`localhos ... -
Mysql日期和时间函数
2011-03-29 15:50 675这里是一个使用日期函 ... -
MySQL数据库优化的具体方法说明
2011-03-29 15:39 761以下的文章主要讲述的是实现MySQL数据库简单实用优化的具体方 ... -
MySQL之Explain
2011-03-29 15:16 622前记:很多东西看似简 ... -
MySQL维护命令集锦--查看表的状态(show table status)
2011-03-29 15:11 1230查看表的引擎类型等状态信息: show table statu ...
相关推荐
MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计
"MySQL性能调优与架构设计.pdf" 本资源摘要信息是关于 MySQL 数据库软件的性能调优和架构设计的知识点。MySQL 是一个流行的开源数据库管理系统,具有简单高效可靠的特点,广泛应用于各个行业。以下是从给定的文件中...
MySQL性能调优与架构设计 PDF图书MySQL性能调优与架构设计 PDF图书
### MySQL性能调优与架构设计的关键知识点 #### 一、MySQL概述 - **定义与特点**:MySQL是一款由MySQL AB公司开发(后被Sun Microsystems收购)的开源数据库管理系统,以其简单高效、可靠性强等特点著称。它是一款...
### MySQL性能调优与架构设计的关键知识点 #### 一、MySQL概述 - **MySQL Server简介** - **定义**: MySQL是由MySQL AB公司(现已被Oracle收购)开发的一款开放源代码的关系型数据库管理系统(RDBMS)。 - **特点*...
本书以 MySQL 数据库的基础及维护为切入点,重点介绍了 MySQL 数据库应用系统的性能调优,以及高可用可扩展的架构设计。 全书共分3篇,基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份...
模块四热点问题解答26讲单例模式:如何创建单一对象优化系统性能27讲原型模式与享元模式:提升系统性能的利器32讲MySQL调优之SQL语句:如何写出高性能SQL语句33讲MySQL调优之事务:高并发场景下的数据库事务调优34讲...
MySQL性能调优与架构设计是IT领域中一个关键的话题,特别是在大数据时代,高效稳定的数据库管理是企业业务的基础。本文将深入探讨如何优化MySQL的性能,以及如何设计高可用的数据库架构,以实现低成本且高性能的...
MySQL性能调优参数 MySQL 是一个广泛使用的开源关系型数据库管理系统,在实际应用中,如何提高 MySQL 的性能是一个关键的问题。本文将总结 MySQL 性能调优参数,涵盖 Innodb 相关参数、连接参数、缓存参数、日志...
在《MySQL性能调优与架构设计》一书中,附录部分提供了一个名为“example”的数据库创建脚本。这个脚本是用于演示和学习如何构建一个简单的数据库结构,它包含了几个核心表,如event、group_message、group_message_...
《MySQL性能调优与架构设计》是一本由简朝阳编著的专业书籍,专注于探讨如何提升MySQL数据库系统的性能并进行高效架构设计。这本书是扫描版,可能包含图像化的文本,适合电子阅读。 MySQL作为世界上最受欢迎的开源...
### MySQL性能调优工具介绍与应用 MySQL作为全球最广泛使用的开源关系型数据库之一,在企业级应用中的地位不可动摇。为了确保MySQL能够高效稳定地运行,掌握一系列性能调优工具至关重要。本文将详细介绍多种MySQL...
以上只是《MySQL性能调优与架构设计》中部分核心知识点的概述,实际内容更加丰富,包括具体的参数调优、性能瓶颈分析、故障排查等多个方面,对于数据库管理员和开发人员来说,都是不可多得的参考资料。通过学习本书...
本书“MySQL性能调优与架构设计高清全册”深入探讨了如何优化MySQL的性能并设计高效的数据架构,以满足大规模应用的需求。以下是对该书内容的详细解读: 1. **SQL基础与优化**:书中首先会讲解SQL语言的基本概念,...
MySQL是世界上最受欢迎的...本全册将详细讲解以上知识点,并通过实例演示如何在实际应用中实施这些策略,帮助读者成为MySQL性能调优与架构设计的专家。无论你是初学者还是有经验的DBA,都能从中获得宝贵的知识和经验。
### MySQL性能调优与架构设计 #### 一、MySQL Server简介 ##### 1.1 什么是MySQL MySQL是由MySQL AB公司(后来被Sun Microsystems收购,随后Sun又被Oracle收购)自主研发的一款开源数据库管理系统。它是一款支持...
### MySQL性能调优与架构设计知识点概述 #### 一、MySQL基本介绍 ##### 1.1 MySQL Server简介 - **1.1.1 什么是MySQL** - MySQL是一款由MySQL AB公司开发的开源数据库管理系统,后来被Sun Microsystems收购。它是...
MySQL性能调优是一个复杂而重要的任务,涉及到多个层面,包括SQL查询优化、索引管理、存储引擎选择、架构设计等。下面将详细讲解这些关键点。 首先,SQL查询优化是性能提升的基础。优化SQL语句可以减少数据库的计算...