`
liudaoru
  • 浏览: 1575595 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql优化 mysql性能调优

阅读更多

From: http://www.phpcms.cn/2009/0330/168.html

 

在整体的系统运行过程中,数据库服务器 MySQL 的压力是最大的,不仅占用很多的内存和 cpu 资源,而且占用着大部分的磁盘 io 资源,连 PHP 的官方都在声称,说 PHP 脚本 80% 的时间都在等待 MySQL 查询返回的结果。由此可见,提高系统的负载能力,降低 MySQL 的资源消耗迫在眉睫。

1、页面缓存功能:


页面缓存功能降低MySQL的资源消耗的(系统本身就已经考虑,采用生成HTML页面,大大降低了数据库的压力)。

2、mysql服务器的优化

  2.1、修改全站搜索
    修改my.ini(my.cnf) ,在 [mysqld] 后面加入一行“ft_min_word_len=1”,然后重启Mysql,再登录网站后台(模块管理->全站搜索)重建全文索引。 
  2.2、记录慢查询sql语句,修改my.ini(my.cnf),添加如下代码:
    #log-slow-queries
    long_query_time = 1 #是指执行超过多久的 sql 会被 log 下来
    log-slow-queries = E:/wamp/logs/slow.log #设置把日志写在那里,可以为空,系统会给一个缺省的文件
    #log-slow-queries = /var/youpath/slow.log linux下     host_name-slow.log
    log-queries-not-using-indexes 
  2.3、mysql缓存的设置
   mysql>show variables like '%query_cache%';     mysql本身是有对sql语句缓存的机制的,合理设置我们的mysql缓存可以降低数据库的io资源。
    #query_cache_type= 查询缓存的方式(默认是 ON)
    query_cache_size 如果你希望禁用查询缓存,设置 query_cache_size=0。禁用了查询缓存,将没有明显的开销
    query_cache_limit 不缓存大于这个值的结果。(缺省为 1M) 
   2.4、查询缓存的统计信息
   mysql> SHOW STATUS LIKE ‘qcache%’;
     Qcache_free_blocks 缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE 会对缓存中的碎片进行整理,从而得到一个空闲块。
    Qcache_free_memory 缓存中的空闲内存。
    Qcache_hits 每次查询在缓存中命中时就增大。
    Qcache_inserts 每次插入一个查询时就增大。命中次数除以插入次数就是不中比率;用 1 减去这个值就是命中率。在上面这个例子中,大约有 87% 的查询都在缓存中命中。
    Qcache_lowmem_prunes 缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks 和 free_memory 可以告诉您属于哪种情况)。
    Qcache_not_cached 不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句。
    Qcache_queries_in_cache 当前缓存的查询(和响应)的数量。
    Qcache_total_blocks 缓存中块的数量。通常,间隔几秒显示这些变量就可以看出区别,这可以帮助确定缓存是否正在有效地使用。运行 FLUSH STATUS 可以重置一些计数器,如果服务器已经运行了一段时间,这会非常有帮助。
   2.5、my.ini(my.conf)配置
    2.5.1、key_buffer_size = 256M
    # key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。     对于内存在4GB左右的服务器该参数可设置为256M或384M。注意:该参数值设置的过大反而会是服务器整体效率降低!
    2.5.2、
    max_allowed_packet = 4M
    thread_stack = 256K
    table_cache = 128K
    sort_buffer_size = 6M
    查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。
    2.5.3、
    read_buffer_size = 4M
    读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享! 
    2.5.4、join_buffer_size = 8M
    联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享! 
    2.5.5、
    myisam_sort_buffer_size = 64M
    table_cache = 512
    thread_cache_size = 64
    query_cache_size = 64M
    指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察:
    # > SHOW VARIABLES LIKE '%query_cache%';
    # > SHOW STATUS LIKE 'Qcache%';
    # 如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况;
    #如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;
    Qcache_free_blocks,如 果该值非常大,则表明缓冲区中碎片很多
    2.5.6、
    tmp_table_size = 256M
     max_connections = 768
    指定MySQL允许的最大连接进程数。如果在访问论坛时经常出现Too Many Connections的错误提示,则需要增大该参数值。
    2.5.7、
    max_connect_errors = 10000000
    wait_timeout = 10
    指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。 
    2.5.8、
    thread_concurrency = 8
    该参数取值为服务器逻辑CPU数量×2,如果服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8 
     2.5.9、
    skip-networking
    开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!

 

分享到:
评论
5 楼 liudaoru 2010-06-04  
同事总结的性能优化信息

1 mysql中cache的类型简介:
table cache: 表cache,降低文件的磁盘寻址时间,更快速地访问表中的内容
key cache: 表index的cache,决定了数据库索引处理的速度
query cache:对query结果的cache,使用完整的SQL字符串做 key,两个SQL必须完全一致才会导致Cache命中

Key_buffer_size 为2G : 分库分表后问答系统表和索引数都明显增多,而很多query的响应时间很依赖索引,所以为该cache分配的空间较大
Query_cache_size 为 128M: 由于需要完全一致的query,才能命中该cache,而应用类型决定这种可能性极低,所以为该cache分配的空间较小
Table_cache 为10000:可以缓存10000个表,满足需求


性能测试中的mysql调优过程中,可能会用到以下命令,得到系统当前运行的详细情况:
2 mysqladmin extended-status

Key_blocks_used 用于关键字缓存的块的数量。                            
Key_read_requests 请求从缓存读入一个键值的次数。                      
Key_reads 从磁盘物理读入一个键值的次数。                              
Key_write_requests 请求将一个关键字块写入缓存次数。                   
Key_writes 将一个键值块物理写入磁盘的次数。                           

性能测试中可以适当关注Key_reads/Key_read_requests 值,cache命中率越低则该值越小



以下列出了其他一些参数的含义:
Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。              
Connections 试图连接MySQL服务器的次数。                               
Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。     
Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。           
Delayed_writes 用INSERT DELAYED写入的行数。                           
Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands 执行FLUSH命令的次数。                                  
Handler_delete 请求从一张表中删除行的次数。                           
Handler_read_first 请求读入表中第一行的次数。                         
Handler_read_key 请求数字基于键读行。                                 
Handler_read_next 请求读入基于一个键的一行的次数。                    
Handler_read_rnd 请求读入基于一个固定位置的一行的次数。               
Handler_update 请求更新表中一行的次数。                               
Handler_write 请求向表中插入一行的次数。                              
Max_used_connections 同时使用的连接的最大数目。                       
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。     
Open_tables 打开表的数量。                                            
Open_files 打开文件的数量。                                           
Open_streams 打开流的数量(主要用于日志记载)                          
Opened_tables 已经打开的表的数量。                                    
Questions 发往服务器的查询的数量。                                    
Slow_queries 要花超过long_query_time时间的查询数量。                  
Threads_connected 当前打开的连接的数量。                              
Threads_running 不在睡眠的线程数量。                                  
Uptime 服务器工作了多少秒。
4 楼 liudaoru 2010-05-18  
查看参数的变化率:
mysqladmin -i 5 -r extended-status | grep Com_select
3 楼 liudaoru 2010-01-14  
执行数据导出
mysql -uroot --default-character-set=gbk f -e'select * from temp_d' > reuslt;
2 楼 liudaoru 2009-12-29  
查看mysql cache等信息:mysqladmin extended-status
1 楼 liudaoru 2009-11-23  
show variables like 'table_cache';

相关推荐

    MySQL性能调优与架构设计(pdf高清)

    MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计MySQL性能调优与架构设计

    MySQL性能调优与架构设计.pdf

    "MySQL性能调优与架构设计.pdf" 本资源摘要信息是关于 MySQL 数据库软件的性能调优和架构设计的知识点。MySQL 是一个流行的开源数据库管理系统,具有简单高效可靠的特点,广泛应用于各个行业。以下是从给定的文件中...

    MySQL性能调优与架构设计 PDF图书 百度网盘下载链接

    MySQL性能调优与架构设计 PDF图书MySQL性能调优与架构设计 PDF图书

    MySQL性能调优与架构设计.mobi

    本书以 MySQL 数据库的基础及维护为切入点,重点介绍了 MySQL 数据库应用系统的性能调优,以及高可用可扩展的架构设计。 全书共分3篇,基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份...

    MySQL管理之道 性能调优、高可用与监控 绝对完整PDF版1

    MySQL管理之道 性能调优 高可用与监控 绝对完整PDF版 MySQL作为一款使用极为广泛的开源数据库 被广泛地应用在Internet的中小型网站中 随着MySQL的不断成熟 它也逐渐应用于更多大规模网站中 比如淘宝等 作为MySQL DBA...

    MySQL性能调优与架构设计(完整)

    ### MySQL性能调优与架构设计的关键知识点 #### 一、MySQL概述 - **MySQL Server简介** - **定义**: MySQL是由MySQL AB公司(现已被Oracle收购)开发的一款开放源代码的关系型数据库管理系统(RDBMS)。 - **特点*...

    《MySQL性能调优与架构设计》附录--example数据库脚本

    在《MySQL性能调优与架构设计》一书中,附录部分提供了一个名为“example”的数据库创建脚本。这个脚本是用于演示和学习如何构建一个简单的数据库结构,它包含了几个核心表,如event、group_message、group_message_...

    mysql调优与性能设计

    在MySQL性能调优方面,首先我们需要关注的是查询优化。这包括了编写高效的SQL语句,避免全表扫描,合理使用索引,以及理解执行计划。索引是提升查询速度的关键,正确的创建主键、唯一索引、普通索引和覆盖索引,可以...

    MySQL分布式数据库中间件Mycat性能调优指南

    在实际应用中,Mycat的性能调优对于系统的整体效率至关重要。本指南将深入探讨Mycat性能优化的各个方面,帮助你更好地理解和掌握其关键技巧。 1. **Mycat架构理解**:Mycat的核心功能包括路由分片、数据切分、读写...

    mysql性能调优的方法

    MySQL性能调优是一个复杂而重要的任务,涉及到多个层面,包括SQL查询优化、索引管理、存储引擎选择、架构设计等。下面将详细讲解这些关键点。 首先,SQL查询优化是性能提升的基础。优化SQL语句可以减少数据库的计算...

    MySQL性能调优与架构设计

    ### MySQL性能调优与架构设计的关键知识点 #### 一、MySQL基本介绍与历史背景 **1.1 MySQL Server简介** MySQL是由MySQL AB公司(后被Sun Microsystems收购,现属Oracle Corporation)开发的一款开源数据库管理...

    mysql高性能---mysql数据库的性能调优

    本篇将围绕“MySQL高性能—数据库的性能调优”这一主题,深入探讨如何优化MySQL的性能,提升系统整体效率。 首先,性能优化主要涉及以下几个方面: 1. **查询优化**:高效的SQL查询是性能提升的关键。这包括避免全...

    2021年MySQL性能调优与架构设计整理.pdf

    ### MySQL性能调优与架构设计的关键知识点 #### 一、MySQL概述 - **定义与特点**:MySQL是一款由MySQL AB公司开发(后被Sun Microsystems收购)的开源数据库管理系统,以其简单高效、可靠性强等特点著称。它是一款...

    MYSQL性能调优工具介绍与应用

    ### MySQL性能调优工具介绍与应用 MySQL作为全球最广泛使用的开源关系型数据库之一,在企业级应用中的地位不可动摇。为了确保MySQL能够高效稳定地运行,掌握一系列性能调优工具至关重要。本文将详细介绍多种MySQL...

    MySQL管理之道 性能调优、高可用与监控

    本书由资深MySQL专家撰写,以最新的MySQL版本为基础,以构建高性能MySQL服务器为核心,从故障诊断、表设计、SQL优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、MySQL高可用集群搭建与管理、MySQL服务器...

    阿里巴巴Java性能调优实战(2021-2022华山版)+Java架构核心宝典+性能优化手册100技巧.rar

    阿里巴巴Java性能调优华山版是一套系统性能调优教程,!通过这份笔记的学习,你将会有...MySQL性能优化的 50+ 小技巧 Redis 性能优化的 13 个小技巧 . . . 每篇文章图文并茂,附有源码 + 性能评测结果 + 优化方案。

    mysql调优文档集合

    MySQL性能调优文档.pdf MySQL性能调优与架构设计--全册.pdf MySQL性能优化概述.pdf Mysql性能优化教程.doc mysql中的内存使用.pdf 如何处理大数据量的查询.doc 深入浅出MySQL数据库开发、优化与管理维护.pdf

    MySQL性能调优与架构设计 简朝阳.扫描版

    《MySQL性能调优与架构设计》是一本由简朝阳编著的专业书籍,专注于探讨如何提升MySQL数据库系统的性能并进行高效架构设计。这本书是扫描版,可能包含图像化的文本,适合电子阅读。 MySQL作为世界上最受欢迎的开源...

Global site tag (gtag.js) - Google Analytics