`

mysql 性能优化

 
阅读更多

 

(有时候MySQL比较傻,所以你得会使用FORCE INDEX)。

select * from t

FORCE INDEX(rid)

where ,,,

 

 

/////// 多个 char(255)

对于 有些字符串需求,长度超过了char(255), 使用 text 又浪费,可以使用两个char(255),速度快了吧

 

// 显示有哪些索引

SHOW INDEX FROM  db.table

 

 

 

 

------------------------------------------------

 


【架构】
1. 字段类型精确设置,
2. 表链接 查询时的对比字段类型需要一致,长度 也要一致,比如,都是char(16),char(16)
3. 排序,大偏移量,,先读取主键,然后根据主键取需要的字段 数据
4. mysql 一次执行职能使用一个索引,注意需要排序的字段和其他有索引的字段 语句设计
5. memory表 使用hash索引,hash 索引仅支持 “=”,“IN”,“<=>” 条件,不能排序


【程序】
以下理论都不是绝对的,而是开发初期应该做的,到了开发后期,出现性能问题的时候,要根据实际情况决定哪个更合适

1. 请求了不必要的字段
2. 有必要使用limit
3. 没特殊必要,都用简单的select 查询语句取数据,不要多表链接查询,,不放心可以在开发完成后进行测试,链表是否更好
4. 减少服务器请求次数,(和第三条貌似有些矛盾,没关系,因地制宜)
5. 不要用子查询,
6. 不要一次性让数据库处理太多 curd操作,要产生时间间隔 分批次执行,
7. count(*)
8. limit 优化
     select * from t limit 99999,20;
     改成 select * from t where id> (select id from t limit 99998,1) limit 20;
    
     对于分页,如果每页需要数据 20条,那么取21,最后一个的id就可以用于下一页使用,而不必再使用 子查询


x. 网上搜到,下面情况会使索引失效:没有实际测试过在什么情况会失效,反正避免使用它们吧
  
    1.对索引列进行进行 计算 或用 函数 加以处理时
    2.两边比较值的索引列的数据类型不一致时
    3.not in ,or 关键字会使索引失效
    4.含有null列值的列,即使该列是组合索引中的其中一列
    5.任何where子句中含有IS NULL ,IS NOT NULL
    6.like 中首个关键字符是通配符时,如:'%haitao%'
    7.order by子句中:
        使用表达式时;
        对不同的索引键做 ORDER BY : SELECT * FROM t1 ORDER BY key1, key2; 。
        用于搜索记录的索引键和做 ORDER BY 的不是同一个:SELECT * FROM t1 WHERE key2=constant ORDER BY key1;

 


   emp_no<'10010'  范围列可以用到索引(必须是最左前缀),但是范围列后面的列无法用到索引。同时,索引最多用于一个范围列,因此如果查询条件中有两个范围列则无法全用到索引。
   很多需要实际看数据使用情况,比如,多列索引的最左前缀使用,


    总结之:sql语句里,不用 函数,or, null,like, ,其他是设计数据库的问题
    不要轻易相信网上说的一切,有性能问题的时候,explain 你的sql,还有 mysql> set profiling=1, 才是真的,

 

 

  
  
【服务器】
    查询缓存,
    缓存可能因大量碎片,内存不足,数据改变 导致失效,
    如果已经分配了足够的内存,query_cache_min_res_unit 也调整到了合适值,
    那就是数据改变过多引起的,可以查看Com_*(com_update,com_delete)的值看有多少查询被修改了,
    Qcache_lowmem_prunes -- 因内存不足而失效的查询
  
  
    query_cache_type     是否开启 查询缓存
    query_cache_size     分配的内存大小,必须是1024的倍数
    query_cache_limit     查询结果集最大限制,如果查询结果比这个大,将不缓存,如果确认某个sql语句 是这样,语句加上 sql_no_cache 提供性能
  
    优化缓存的大原则:
           减少碎片
           提高可用性

    query_cache_min_res_unit    一个内存和cpu较量的参数
   

    Qcache_free_blocks
        如果Qcache_free_blocks接近Qcache_total_blocks的一半,说明查询cache碎片很严重
        可以使用FLUSH QUERY CACHE命令来去掉查询cache中的碎片,他不会将cache的结果删除,那是RESET QUERY CACHE的工作
       
       
    -------------------
   
    show  variables like '%slow%';
    show  global variables;

 

 

 

--------补充

varchar类型并不是不能超过255长度(实际上是65535字节),而是超过了255,这个字段就不能建立索引了。

 

在MySQL5.0.3及以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去 了3个字节,也就是说,在5.0.3以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以在高版本中使用可变长的varchar来存放,这样就 能有效的减少数据库文件的大小

  • 大小: 403.2 KB
分享到:
评论

相关推荐

    千金良方:MySQL性能优化金字塔法则.docx

    MySQL性能优化金字塔法则 MySQL性能优化是指通过调整MySQL数据库的配置、优化数据库结构和查询语句等方式,提高MySQL数据库的性能和响应速度,以满足应用程序的需求。MySQL作为最流行的开源数据库之一,被广泛应用...

    MySQL性能优化和高可用架构实践.pptx

    "MySQL性能优化和高可用架构实践" 本书《MySQL性能优化和高可用架构实践》是一本详细介绍MySQL性能优化和高可用架构实践的书籍,旨在帮助读者提升MySQL数据库的性能和可靠性。本书的内容涵盖了查询优化的基本原则和...

    mysql性能优化.pptx

    MySQL性能优化是一个涵盖广泛的主题,涉及多个层面,包括SQL语句优化、索引优化、数据库表结构优化、系统级配置优化以及服务器硬件优化。以下是对这些方面进行详细说明: 1. **SQL语句优化** - **慢查询日志**:...

    mysql性能优化教程.pdf (by caoz)

    ### MySQL性能优化知识点详解 #### 一、背景及目标 - **目的**:厦门游家公司(4399.com)为了提升员工技能水平,制定了这份MySQL性能优化教程,旨在为已有一定MySQL使用经验的工程师提供实战指导。 - **适用场景*...

    mysql 性能优化与架构设计(word版)

    MySQL性能优化与架构设计是数据库管理员、开发人员和系统管理员关注的重要领域,因为数据库性能直接影响到应用程序的响应速度和整体用户体验。本资料提供了一个全面的视角,深入探讨了如何优化MySQL的性能并进行有效...

    MySQL性能优化中文手册

    MySQL性能优化是数据库管理员和开发人员的关键技能,它涉及到如何有效地使用SQL语句、存储过程和函数,以提高数据查询速度和系统整体效率。本手册将深入探讨这些关键领域,帮助你理解并实施最佳实践。 在SQL语句...

    MySQL性能优化详解

    # MySQL性能优化详解 ## 一、MySQL性能优化的重要性及概览 ### 1.1 MySQL性能优化简介 在Web应用程序架构中,数据持久层(通常指关系数据库)扮演着核心角色,对整个系统的性能至关重要。MySQL作为一种广泛使用的...

    Mysql性能优化教程

    MySQL性能优化是数据库管理中的关键环节,特别是在高并发场景下,优化MySQL的性能对于提升系统整体效率至关重要。本教程将深入探讨MySQL性能优化的各个方面,帮助你理解并实践有效的优化策略。 首先,我们来了解**...

    百度mysql性能优化ppt

    【标题】:“百度mysql性能优化ppt”所涉及的知识点涵盖了MySQL数据库在性能调优方面的多个重要环节。在MySQL性能优化中,我们关注的核心是提升数据处理速度,减少资源消耗,从而提高系统的整体效率。 【描述】:...

    MySQL性能优化教学视频资料.zip

    MySQL性能优化是一个涵盖广泛的主题,包括但不限于查询优化、索引策略、存储引擎选择、数据库架构设计、资源管理和配置调整等多个方面。以下是对这些关键知识点的详细说明: 1. **查询优化**:这是性能优化的基础,...

    mysql性能优化

    MySQL性能优化是数据库管理中的关键环节,它直接影响到应用程序的响应速度和整体系统效率。以下是一些关于MySQL性能优化的重要知识点: 1. **索引优化**:索引是提升查询速度的关键,合理创建主键、唯一索引和普通...

    高并发基础之-MySql性能优化.pdf

    总结来说,MySQL性能优化是一个系统工程,涵盖查询优化、数据库结构优化和服务器配置优化等多个层面。通过掌握这些优化手段,我们可以有效减少系统瓶颈,提高数据库响应速度,从而提升整个应用的性能。在实际操作中...

    十三MySQL性能优化详解.pdf

    MySQL 性能优化详解 MySQL 是目前使用最多的开源数据库,但是 MySQL 数据库的默认设置性能非常的差,仅仅是一个玩具数据库。因此,在产品中使用 MySQL 数据库必须进行必要的优化。优化是一个复杂的任务,本文描述 ...

    mysql性能优化总结

    MySQL性能优化是一个涵盖广泛的主题,涉及数据库设计、SQL查询优化、索引策略等多个方面。以下是对标题和描述中提到的一些关键知识点的详细说明: 1. **表的优化**: - **定长与变长字段的分离**:将定长字段(如...

    Mysql性能优化教程.doc

    ### MySQL性能优化教程知识点概述 #### 一、MySQL执行优化 **1.1 背景及目标** - **背景**: 针对已具备一定MySQL使用经验的工程师,特别是适用于高并发、海量数据处理的互联网环境。 - **目标**: 通过对MySQL性能...

    caoz的mysql性能优化教程

    MySQL性能优化是数据库管理员和开发人员的关键技能,尤其在大数据量和高并发的业务场景下。本教程由知名IT专家caoz提供,旨在帮助你深入理解MySQL的性能调优策略,提升数据库系统的运行效率。 一、索引优化 索引是...

    MySQL性能优化诊断脚本

    MySQL性能优化诊断脚本是一种非常实用的工具,用于检测和分析MySQL数据库的性能问题。`tuning-primer.sh`就是这样一个脚本,它通过运行一系列的查询和检查,为数据库管理员提供有关系统性能的深入见解,并提出可能的...

    mysql性能优化与架构设计

    MySQL性能优化与架构设计是数据库管理员和开发人员必须掌握的关键技能之一。MySQL作为一个广泛使用的开源关系型数据库管理系统,其性能优化对于提升应用的整体性能至关重要。本资料主要关注MySQL的架构理解、性能...

    mysql性能优化综述

    ### MySQL性能优化综述 MySQL作为一款广泛使用的开源关系型数据库管理系统,在许多应用场景中都需要针对其性能进行优化。本文将从几个关键方面详细介绍如何优化MySQL的性能。 #### 1. 最底层优化 - **参数优化**:...

Global site tag (gtag.js) - Google Analytics