mysql日常优化细节

# sql语句优化
>
1)使用limit限制一次性查询出的数据量
2)链接查询代替子查询
3)尽量不要使用select * ,将需要查找的字段列出来
4)如果数据量特别大的话尽量将一条复杂的sql拆分成多个sql完成功能
5)...
# 选择合适的数据类型

> (1)使用可存下数据的最小的数据类型,整型 < date,time < char,varchar < blob
(2)使用简单的数据类型,整型比字符处理开销更小,因为字符串的比较更复杂。如,int类型存储时间类型,bigint类型转ip函数
(3)使用合理的字段属性长度,固定长度的表会更快。使用enum、char而不是varchar
(4)尽可能使用not null定义字段
(5)尽量少用text,非用不可最好分表

# 选择合适的索引列
> (1)查询频繁的列,在where,group by,order by,on从句中出现的列
(2)where条件中<,<=,=,>,>=,between,in,以及like 字符串+通配符(%)出现的列
(3)长度小的列,索引字段越小越好,因为数据库的存储单位是页,一页中能存下的数据越多越好
(4)离散度大(不同的值多)的列,放在联合索引前面。查看离散度,通过统计不同的列值来实现,count越大,离散程度越高:
```
mysql> SELECT COUNT(DISTINCT column_name) FROM table_name;
```

# 学会使用命令分析数据库

## SHOW查看状态
```
mysql> SHOW [SESSION|GLOBAL] STATUS LIKE ‘%Status_name%‘;
session(默认):取出当前窗口的执行
global:从mysql启动到现在
```
> 查看查询次数(插入次数com_insert、修改次数com_insert、删除次数com_delete)
```
mysql> SHOW STATUS LIKE ‘com_select‘;
```

> 查看连接数(登录次数)
```
mysql> SHOW STATUS LIKE ‘connections‘;
```

> 数据库运行时间

```
mysql> SHOW STATUS LIKE ‘uptime‘;
```

> 查看慢查询次数

```
mysql> SHOW STATUS LIKE ‘slow_queries‘;
```

> 查看索引使用的情况:

```
mysql> SHOW STATUS LIKE ‘handler_read%‘;
- handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。
- handler_read_rnd_next:这个值越高,说明查询低效。
```

## 显示系统变量

```
mysql> SHOW VARIABLES LIKE ‘%Variables_name%‘;
```

## 显示InnoDB存储引擎的状态

```
mysql> SHOW ENGINE INNODB STATUS;
```

... 持续补充中

原文地址:https://www.cnblogs.com/myblogs-miller/p/9112688.html

时间: 2024-07-30 02:25:03

mysql日常优化细节的相关文章

【20180105】mysql日常优化一则

导读:在日常的MySQL的SQL语句优化工作中,总会遇到了各种各样的问题.今天就是遇到了一个比较诡异的问题,在这里记录下来方便自己的记忆. MySQL版本信息: MySQL 5.6.38 SQL语句(其中的关键字信息已经做脱敏处理): SELECT id, name, headurl, intro, gender, location, job, birthday, source,created_at FROM user  WHERE name LIKE '%name%' ORDER BY cre

大型网站MySQL深度优化揭秘 2

学无止境,老男孩教育成就你人生的起点! 相信自己相信老男孩!!! 老男孩-51cto-公开课-大型网站MySQL深度优化揭秘 部分整理有没跟上的抱歉 ? 目 录 大型网站MySQL深度优化揭秘????2 第1章 优化的思路和线路????2 1.1 网站优化的思路????2 1.2 MySQL优化,nginx这样的东西怎么优化?????2 第2章 硬件层面优化????3 2.1 数据库物理机????3 2.1.1 CPU????3 2.1.2 Memory????3 2.1.3 disk(磁盘IO

mysql sql优化

前言 有人反馈之前几篇文章过于理论缺少实际操作细节.这篇文章就多一些可操作性的内容吧. 注:这篇文章是以 MySQL 为背景,非常多内容同一时候适用于其它关系型数据库,须要有一些索引知识为基础. 优化目标 1.降低 IO 次数 IO永远是数据库最easy瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,降低 IO 次数是 SQL 优化中须要第一优先考虑.当然,也是收效最明显的优化手段. 2.减少 CPU 计算 除了 IO 瓶颈之外,SQL优化中须

Mysql数据库优化技术之配置篇、索引篇 ( 必看 必看 转)

转自:Mysql数据库优化技术之配置篇.索引篇 ( 必看 必看 ) (一)减少数据库访问 对于可以静态化的页面,尽可能静态化 对一个动态页面中可以静态的局部,采用静态化 部分数据可以生成XML,或者文本文件形式保存 使用数据缓存技术,例如: MemCached (二)优化的检测方法 1.用户体验检测 2.Mysql状态检测 在Mysql命令行里面使用show status命令,得到当前mysql状态. 主要关注下列属性: key_read_requests (索引读的请求数)(key_buffe

记一次mysql性能优化过程

摘要: 所谓mysql的优化,三分是配置的优化,七分是sql语句的优化,通过一些案例分析,希望给大家在工作中带来一些思路 由于配置是运行过那么长时间,很稳定,基本上不考虑,所以本次主要是sql的优化,并且集中在开源中国的个人空间.下面是这次优化的数据库版本: 案例一:粉丝查询优化 粉丝查询有2条sql --查询所有粉丝 SELECT user FROM osc_friends f INNER JOIN osc_users u ON u.id=f.user AND f.friend=? AND f

mysql性能优化教程(转)

Mysql 性能优化教程 目录 目录 背景及目标 Mysql 执行优化 认识数据索引 为什么使用数据索引能提高效率 如何理解数据索引的结构 如何理解影响结果集 理解执行状态 常见分析手段 分析流程 总结 Mysql 运维优化 存储引擎类型 内存使用考量 性能与安全性考量 存储压力优化 运维监控体系 Mysql 架构优化 架构优化目标 防止单点隐患 方便系统扩容 安全可控,成本可控 分布式方案 分库&拆表方案 主从架构 故障转移处理 缓存方案 缓存结合数据库的读取 缓存结合数据库的写入      

MySQL性能优化经验

csdn博客搬迁 1. 简介在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响.MySQL是目前使用最多的开源数据库,但是MySQL数据库的默认设置性能非常的差,仅仅是一个玩具数据库.因此在产品中使用MySQL数据库必须进行必要的优化.优化是一个复杂的任务,本文描述MySQL相关的数据库设计和查询优化,服务器端优化,存储引擎优化. 2. 数据库设计和查询优化在MySQL Server性能调优中,首先要考虑的就是Database Sche

对于mysql数据库优化的见解

一.数据库占用的空间大小.表占用空间大小.索引占用空间大小 在用阿里云的数据库的时候经常出现磁盘空间爆满的情况.所以要经常查询数据库相关内容占用的磁盘大小,有很多mysql客户端如navicat 就可以直接查看数据库表的一些基本信息.也可以通过MySQL的 information_schema 数据库,查询数据库中每个表占用的空间.表记录的行数: 该库中有一个 TABLES 表,这个表主要字段分别是: TABLE_SCHEMA : 数据库名 TABLE_NAME:表名 ENGINE:所使用的存储

mysql索引优化和sql语句优化

一.mysql索引分为btree索引和hash索引. btree索引是二叉树结构 先到索引树上找,再去根据索引到数据里边找数据. hash索引是memory引擎,精准查询非常快,如果查范围内(where>8),会比较慢.因为是无序的,无法使用前缀索引. 2.btree索引 建立索引,通常是经常用到做查询条件,做分组,做排序. 独立索引,单个建索引只能用一个索引,通常用联合索引. 如建了一个(a,b,c)的复合索引,那么实际等于建了(a),(a,b),(a,b,c)三个索引,因为每多一个索引,都会