`
hejiajunsh
  • 浏览: 410851 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

MySQL优化之经验篇

阅读更多

 * 针对Innodb表,尽量不执行SELECT COUNT(*)语句,因为Innodb表没有类似MyISAM那样的内部计数器来记录表记录总量,执行这个操作将会全表扫描,速度很慢. 
   * 尽量使用MyISAM表,除非必须使用其他类型,因为MyISAM类型的总体读写效率是相当高的,缺点是表级锁,而不是行/页级锁. 
   * 善用EXPLAIN来帮助你分析查询优化情况 
   * 如果需要对一个较大的且并发读写较多的数据表做GROUP BY等统计操作,建议使用摘要表来存储统计信息,定期更新统计表,这可能获得很大的性能改善. 
   * 查询时如果有ORDER BY分句的话,注意让它的字段顺序和索引字段顺序对应,这样能加快排序速度 
   * 如果有一个多字段索引,则查询时,必须按照索引顺序来使用,否则该索引不会用到.例如: 
     索引`idx_`(col1, col2, col3),那么查询SELECT .... FROM ... WHERE col1=1 AND col2=2;使用索引,而查询... WHERE col2=2 AND col3=3;或... WHERE col1=1 AND col3=3;则不使用索引. 
   * WHERE中的条件如果有恒量类型的(如 `field` = 1),就尽量放在前面,这样能更快的执行过滤. 
   * 2 个表连接时,连接字段的类型最好一致(包括字段长度),这样的话索引速度快多了. 
   * 大部分情况下,字符类型的字段索引值需要一部分,例如CREATE INDEX char_idx ON tbl1 ( name(10) ); 
   * 尽量使用最合适的数据类型,能使用ENUM就不使用TINYINT,能使用SMALLINT就不使用MEDIUMINT.这样能节省存储空间,增加数据存储量,提高搜索速度.不要担心这样会对省级产生很大的影响,因为加入从TINYINT类型改变为INT的话,并不会改变原来的数据. 
   * 如果知道某个表总是频繁使用的话,可以把它放到hot_cache中,用以下方法: 

     SET GLOBAL hot_cache.key_buffer_size=128*1024; 
     CACHE INDEX `xxx` IN hot_cache; 

   * 把拖沓复杂,速度慢的的查询分解成多个简洁明了的查询,这样尽管查询次数多了,但是总体速度和效率却可能反而更高了,而且也减少了锁表的可能. 
   * 执行查询时,尽量不使用外部函数,因为这样的话就无法使用可能存在的索引,并且无论如何都会极大地降低效率.如:... WHERE `create_time` > UNIX_TIMESTAMP(NOW());这样的查询.可以在程序中把当前的时间取得,然后直接执行构造好了的SQL语句. 
   * 在索引字段上使用 LIKE 查询时,左边不要使用 '%' 修饰符,这样就可以利用索引,否则无法使用索引.如... `name` LIKE 'yejr%';. 
   * 如果有可能,多使用存储过程,这大概能获得 22% 的性能提高. 
   * 如果并发访问量相对最大连接数小多了的话,最好使用永久连接,这样能节省不少连接时的系统资源损耗. 
   * 定期的在MyISAM表上执行OPTIMIZE TABLE,这能整理随便,提高索引效率. 
   * 如果你主要按 col1,col2,...顺序检索记录,请在对表大量更改后执行ALTER TABLE ... ORDER BY col1, col2, ...语句,这可以获得更好的性能. 
   * 对于频繁更改的MyISAM表,应尽量避免更新所有变长字段(VARCHAR、BLOB和TEXT). 
   * 对于记录总数超过500万的单表,就应该赶紧考虑分表了.分表策略有多种,比如按ID号段,或者按时间切分,等等. 
   * 创建数据表时尽量指定字段不能为NULL,并且有默认值. 
   * 使用LOAD DATA,而不是使用大批量的INSERT语句来导入数据. 
   * 使数据表名和字段名尽可能的短,例如在user表中使用字段名name,而不是user_name. 
   * 用DELAY_KEY_WRITE = 1选项让MyISAM更快地更新索引,因为在表关闭之前它们不刷新到硬盘上.缺点是如果服务器如果突然被杀掉了,重启之后就必须运行myisamchk修复索引才行. 
   * 采用复制机制来分摊读数据的负载,把写数据只放在主服务器上,把读平均分摊到各个从服务器上,能大大提高系统负载. 

分享到:
评论

相关推荐

    MYSQL优化-一篇很好的优化文章

    21. MYSQL扩展/优化-提供更快的速度 22. MYSQL何时使用索引 23. MYSQL何时不使用索引 24. 学会使用EXPLAIN 25. 学会使用SHOW PROCESSLIST 26. 如何知晓MYSQL解决一条查询 27. MYSQL非常不错 28. MYSQL应避免...

    MySQL数据库优化SQL篇PPT课件.pptx

    MySQL数据库优化SQL篇PPT课件.pptx 本PPT课件主要讲述了MySQL数据库优化的重要知识点,特别是SQL优化方面的内容。从执行计划、SELECT语句、IN和EXIST语句、LIMIT语句、RAND函数、Order by、Group by、Distinct和...

    辛星笔记之MySQL优化篇

    在深入探讨辛星笔记之MySQL优化篇的内容之前,我们首先要了解MySQL优化的几个关键方面,这将帮助我们更好地理解文档中提供的知识点。 MySQL优化通常包括对数据库查询的优化、数据库结构的设计优化、服务器配置的...

    MySQL优化篇:排序分组优化.pdf

    MySQL优化篇:排序分组优化,主要关注的是在使用order by和group by关键字进行查询时的性能优化。order by关键字用于对查询结果进行排序,而group by关键字用于对数据进行分组汇总。这两个操作在SQL语句中非常常见,...

    MYSQL_性能优化篇

    【MySQL 性能优化篇】 在数据库应用系统中,MySQL 的性能优化是一个至关重要的主题,因为数据库管理系统往往是系统性能瓶颈的主要来源。然而,性能问题并非总是由数据库软件本身引起,而是涉及多个层面,包括商业...

    MySQL数据库优化SQL篇.ppt

    MySQL数据库优化SQL篇.ppt,适用于企业级项目开发

    MySQL优化篇:慢查询日志.pdf

    总结来说,MySQL的慢查询日志记录了那些执行时间超过预设阈值的SQL语句,通过适当配置和分析这些日志,可以有效发现并优化数据库中的性能瓶颈。在使用慢查询日志时,需注意它可能会对数据库性能造成一定影响,因此...

    MySQL参数优化辅助工具

    本篇将围绕“MySQL参数优化辅助工具”这一主题,详细介绍相关知识点,并提供一个可能的辅助工具介绍。 在MySQL的运行过程中,有许多配置参数可以调整,如innodb_buffer_pool_size、max_connections、query_cache_...

    JVM优化/Tomcat优化/mysql优化-某学院VIP教程

    1 什么是性能优化\ 2 性能测试与优化\ 3 性能优化JVM篇\ 4 性能优化Tomcat篇\ 5 性能优化mysql篇\

    mysql如何进行优化入门篇

    在本篇文章中,我们将探讨MySQL优化的基本概念,以及如何在面对系统性能问题时进行有效的优化。 首先,优化的起点通常不是直接针对MySQL,而是从整体系统层面出发。当用户反馈系统运行缓慢,可能是由于高并发导致的...

    深入浅出MySQL数据库开发、优化与管理维护.doc

    优化篇 在本篇中,我们将学习 MySQL 数据库优化的知识点,包括查询优化、索引优化、存储优化和服务器优化等。 管理维护篇 在本篇中,我们将学习 MySQL 数据库管理维护的知识点,包括数据库备份、数据库恢复、...

    数据库 MySQL 学习笔记高级篇.md

    数据库 MySQL 学习笔记高级篇.md

    MySQL数据库优化SQL篇PPT学习教案.pptx

    MySQL数据库优化SQL篇学习教案 MySQL数据库优化SQL篇学习教案旨在帮助读者学习和掌握 MySQL 数据库优化的相关知识,涵盖了 SELECT 语句优化、执行计划、IN 和 EXISTS 语句、LIMIT 语句、RAND 函数、Order、Group、...

    MYSQL优化.xmind

    mysql优化的脑图文件,已经涵盖了几乎所有情况,分别从“性能监控”,“schema与数据类型优化”,“索引优化”,“查询优化”,“分区表”,“参数设置”这几个方面展开的脑图,是您查找资料的好工具。当然,如果你...

    mysql数据库优化的学习心得

    MySQL 数据库优化技巧总结 MySQL 数据库优化是数据库管理和开发者非常关心的一个问题。由于 MySQL 数据库的性能优化可以直接影响到整个应用系统的性能和用户体验,因此掌握 MySQL 数据库优化技巧对开发者和数据库...

    MySQL调优讨论:原理 优化 技巧

    二、MySQL优化策略 1. **查询重构**:通过分析慢查询日志,找出低效查询并进行重构,比如减少子查询,合并多条SQL,使用EXPLAIN分析查询执行计划。 2. **硬件升级**:增加内存容量,使用更快的SSD硬盘,或者分布式...

    MySQL性能优化的最佳20+条经验

    ### MySQL性能优化的最佳20+条经验 #### 1. 为查询缓存优化你的查询 随着业务规模的不断扩大,数据库操作往往成为整个应用程序的性能瓶颈,特别是在Web应用领域更为突出。因此,不仅DBA需要关注数据库性能问题,...

    MySQL技术内幕 SQL编程及优化.pdf

    1.基础篇 1.1 explain执行计划 1.2 sq|编程 1.3数据类型 1.4查询处理 1.5子查询 1.6联接与集合操作 1.7聚合和旋转操作 2. SQL优化 2.1优化SQL的一般步骤 2.2 索引问题. 2.3两个常用的优化技巧 2.4常用...

    mysql性能优化与架构设计

    性能优化篇: 6. 查询优化:分析查询执行计划,使用EXPLAIN命令,以及调整WHERE子句和JOIN条件以提高查询效率。 7. 索引优化:理解B树、B+树索引的工作原理,如何选择合适的索引类型,以及避免索引失效的策略。 8. ...

Global site tag (gtag.js) - Google Analytics