MySQL学习笔记 8 -性能优化

标签: mysql 学习 笔记 | 发表时间:2014-01-05 17:31 | 作者:u012156133
出处:http://blog.csdn.net
  1. SHOW STATUS LIKE ‘value'; 查询MySQL数据库的性能。
    value参数
    • Connections:连接MySQL服务器的次数
    • Uptime:MySQL服务器的上线时间
    • Slow_queries:慢查询的次数
    • Com_lelect:查询操作的次数
    • Com_insert:插入操作的次数
    • Com_delete:删除操作的次数
  2. 查询MySQL服务器的连接次数:SHOW STATUS LIKE 'Connections';
  3. 优化查询
    1. 分析语句查询
      1. EXPLAIN SELECT语句;
      2. DESCRIBE SELECT 语句;
    2. 索引对查询速度的影响
      1. 分析查询优化:EXPLAIN 数据库查询语句
      2. 使用索引不但会自动优化查询效率,同时也降低服务器的开销。
    3. 使用索引查询
      1. 应用LIKE关键字优化索引查询
        如果匹配字符串中,第一个字符为百分号”%“时,索引不会被使用,如果”%“所在匹配字符串的位置不是第一位置,则索引会被正常使用。
      2. 查询语句中使用多列索引
        CREATE INDEX index_student_info ON studentinfo(name, sex);
        索引必须是应用第一个字段才可以正常使用。
      3. 查询语句中使用OR关键字
        要求查询的两个字段必须同为索引,如果所搜索的条件中,有一个字段不为索引,则在查询中不会应用索引进行查询。
  4. 优化数据库结构
    1. 将字段很多的表分解成多个表
    2. 增加中间表
    3. 优化插入记录的速度
      1. 禁用索引
        禁用索引的语句:ALTER TABLE 表名 DISABLE KEYS;
        重新开启索引的语句:ALTER TABLE 表名 ENABLE KEYS;
      2. 禁用唯一检查性
        SET UNIQUE_CHECKS=0;
        重新开启唯一性检查的语句:SET NINQUE_CHECKS=1;
      3. 优化INSERT语句
        当插入大量数据时,建议使用一个INSERT语句插入多条记录的方式;而且,如果能用LOAD DATA INFILE语句,就尽量使用LOAD DADTA INFILE语句,因为LOAD DATA INFILE语句导入的速度比INSERT语句的速度快。
        INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] 
            [INTO] tbl_name [(col_name,...)]     VALUES ({expr | DEFAULT},...),(...),... 
            [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
    4. 分析表
      基本语法:ANALYZE TABLE 表名1[表名2...];
    5. 检查表
      基本语法:CHECK TABLE 表名1[,表名2][option]
      能够检查InnoDB和MyISAM类型的表是否存在错误;而且,该语句还可以检查视图是否存在错误。
    6. 优化表
      MySQL中使用OPTIMIZE TABLE 语句来优化表,基本语法:OPTIMIZE TABLES 表名1[表名2...];
      通过OPTIMIZE TABLE 语句可以消除删除和更新造成的磁盘碎片,从而减少空间的浪费。该语句在执行过程中也会给表加上只读锁。
  5. 查询高速缓存
    1. 检查高速缓存是否开启
      SHOW VARIABLES LIKE '%quer_cache %';
    2. 使用高速缓存
      SELECT SQL_CACHE * FROM 表名;
      一旦表有变化,查询这个表的高速缓存将会失效,且将从高速缓存中删除。这样防止查询从旧表中返回无效数据。另外,不使用高速缓存查找可以应用SQL_NO_CACHE关键字。
  6. 优化多表查询
  7. 优化表设计
    1. 在设计数据表时应优先考虑使用特定字段长度,后考虑使用变长字段。
    2. 使用OPTMIZE TABLE命令处理用户经常操作的表。
作者:u012156133 发表于2014-1-5 9:31:39 原文链接
阅读:141 评论:0 查看评论

相关 [mysql 学习 笔记] 推荐:

MySQL学习笔记 8 -性能优化

- - CSDN博客数据库推荐文章
SHOW STATUS LIKE ‘value'; 查询MySQL数据库的性能. Connections:连接MySQL服务器的次数. Uptime:MySQL服务器的上线时间. Slow_queries:慢查询的次数. Com_lelect:查询操作的次数. Com_insert:插入操作的次数.

Mysql高性能学习笔记-02

- - ITeye博客
Mysql高性能学习笔记2. 高性能Mysql中的第二章-基准测试和第三章-服务器性能剖析是需要全局考虑的问题,不同的应用场景,基准测试的方式和输入数据是不太一样的. 所以我们后续再讨论这两个问题,先放过去,直接进行优化schema和数据类型的这一话题. 优化数据类型,基本上是用在建表和修改表的场景上,整个优化数据类型这一话题说下来,基本上都是集中于:对于DB数据的高效存储和高效查询.

MySQL全文检索笔记

- - 博客园_首页
MySQL 4.x版本及以上版本提供了全文检索支持,但是表的存储引擎类型必须为MyISAM,以下是建表SQL,注意其中显式设置了存储引擎类型.    其中FULLTEXT(title, body) 给title和body这两列建立全文索引,之后检索的时候注意必须同时指定这两列.    说明全文匹配时忽略大小写.

shell 学习笔记

- tiger - 游戏人生
将脚本目录加到 PATH 中. 在 dash 中如何进行字符串替换. 将 rst 格式文档转换为 blog 可用的 html 代码. shell 脚本虽然不是非常复杂的程序, 但对于首次接触的我来讲, 多少还是有些忌惮. 不过, 接触任何新事物都需要勇敢面对, 逐步树立信心. 我是冲着把脚本写好去的, 所以, 我的目标是能够写出友好, 健壮, 优美的脚本..

OAuth学习笔记

- 宋大妈 - FeedzShare
来自: 标点符 - FeedzShare  . 发布时间:2011年08月29日,  已有 2 人推荐. OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据.

Vim学习笔记

- 临池学书 - C++博客-首页原创精华区
最近在学习Vimtutor中的相关内容,Vim的使用博大精深,很多命令一旦不使用就会忘记,下面把其中的没有使用到的相关命令做一个简单的总结,供以后复习使用. 至于常见的保存,插入等等命令,则不予记录,在以后的使用中加深练习即可. To change until the end of a word, type  ce (ce + 修正的单词).

OAuth学习笔记

- jiaosq - 标点符
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据. 每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频).

HTML学习笔记

- - CSDN博客推荐文章
超文本标记语言( 英文:HyperText Markup Language,HTML)是为“ 网页创建和其它可在 网页浏览器中看到的信息”设计的一种 标记语言. HTML被用来结构化信息——例如标题、段落和列表等等  点击打开链接. w3schools  点击打开链接 {语法大全,超赞.

jQuery学习笔记

- - ITeye博客
什么是jQuery,它能为我们做什么. jQuery是一个javascript类库或称之为javascript框架. 无需刷新页面从服务器获取信息. 简化常见的javascript任务. 为什么会如此流行或说得到大量用户群的支持:. 多重操作集于一行(避免使用临时变量或不必要的重复代码). jQuery利用了CSS选择符的能力,在DOM中快捷而轻松地获取元素或元素集合.

JdbcTemplate学习笔记

- - SQL - 编程语言 - ITeye博客
1、使用JdbcTemplate的execute()方法执行SQL语句. 2、如果是UPDATE或INSERT,用update()方法.    JdbcTemplate将我们使用的JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等等. spring大量使用Template Method模式来封装固定流程的动作,XXXTemplate等类别都是基于这种方式的实现.