mysql优化有哪些着手点_mysql的优化总结
一。数据库设计方面
1)遵循数据库设计三大范式 ,适当的进行反范式设计
第一范式:1NF 原子性 字段不能再拆分
第二范式: 2NF 先满足第一范式 主键之外的要完全依赖于主键,消除了部分依赖
第三范式 :3NF 先满足第二范式 完全消除传递依赖
反范式设计:允许部分冗余字段,目的为了避免多表查询,提高查询速度
优点:查询速度快 缺点:冗余字段多维护起来成本高
范式优点:方便维护 缺点:查询速度不如反范式
2)设计字段的时候尽可能使用小的字段,比如varchar tinyint
3)选择合适的mysql引擎 两个引擎的区别(重点)
1>存储类型的区别 myisam frm 表结构文件 myd数据文件 myi索引文件 innodb frm ibd 数据索引共用一个表空间
2>myisam读的效率高,不支持事务 表锁 innodb支持事务 支持行锁
一般数据是插入和查询使用myisam引擎 ,删除和修改使用innodb引擎
3>mysql5.5以后默认引擎是innodb
4>mysql5.7以后innodb支持全文索引 之前版本不支持
事务:(acid特性)
原子性 一致性 隔离性 持久性
四个隔离级别:读未提交(脏读) 读提交(不可重复读) 重复读(幻读) 序列化(解决幻读 脏读 不可重复读 但是消耗比较大,一般不用)
4)数据表 可以加数据库名为前缀 我们的字段可以加数据表名为前缀,字段起名要有意义,可以使用简称
二。sql语句的优化
1)可以适当的添加索引 但是要注意引起索引失效的几种情况
1>like条件 模糊查询 两个%会导致索引失效
解决方法:只要保证左边没有%号即可
2>索引字段不要使用运算及函数
3>设计表字段的时候 类型是字符串 走索引 如果是int类型 不走索引
4>最左原则 查询过程中条件必须包含最左的一个,否则索引失效
5>避免使用or 否则索引失效
2)开启慢查询
我们不断的在执行sql语句 记录下查询时间超过2秒或者指定时间的sql语句 将这些sql语句写入日志 接下来我们对日志文件中的sql语句 进行 explain 或者 desc分析
slow_query_log=on 开启慢查询
slow_query_log_file=slow.log 查询超过2秒的sql语句 记录到这里
long_query_time=1 记录查询超过1秒的sql语句
log_queries_not_using_indexes 记录查询没有使用到索引的sql语句
3)2000条数据是个界限 2000条范围之内 不用添加索引
4)如果数据量大,不要在sql语句上进行复杂的逻辑运算,避免使用视图 触发器 存储
5)多表联合查询 尽量避免嵌套查询 in 尽量使用inner join 左连接 右链接
三。架构方面的优化(了解知道)
1>采用分布式 读写分离
2>大表可以 使用 分库分表 (横向分表 纵向分表)
3>mysql分区 物理形态上分成五个分区 对于用户来讲 还是当成一张表来对待 再创建表的时候进行分区
4>大型的数据采用数据库中间件 帮你解决数据库数据导入备份 分表分区监控
东方通 360 百度
5>使用redis 进行数据库的缓存 减轻mysql 的压力 提高查询的速度
四。硬件方面的优化
1>使用固态硬盘
2>增加带宽
3>增加内存
4>扩充 数据库服务器的数量
补充说明:*视图 也叫临时表 把经常通过where条件查询的数据放到临时表中 下次 直接从临时表读取 避免过多的损耗数据库
*mysql 存储 存储代码段 经常用它 批量插入数据
mysql触发器 一般用于 表备份 如果一张表 发生修改 同时将修改的内容同步到 另外一张表中
mysql优化有哪些着手点_mysql的优化总结相关推荐
- mysql执行计划中 性能最好_MySQL性能优化-explain执行计划
explain用于获取查询执行计划信息, 一.语法 只需要在select前加上explain即可,如: mysql> explain select 1; +----+-------------+ ...
- mysql所有班级名称和人数_mysql数据库优化课程---12、mysql嵌套和链接查询(查询user表中存在的所有班级的信息?)...
mysql数据库优化课程---12.mysql嵌套和链接查询(查询user表中存在的所有班级的信息?) 一.总结 一句话总结: in:distinct:select * from class wher ...
- mysql 重复率高字段 索引_MySQL性能优化(二)索引优化
一.选择合适的列建立索引 1.在where从句,group by从句,order by从句,on从句中出现的列(select) 2.索引字段越小越好(表每页数据才会更多,IO效率会更高) 3.离散度大 ...
- mysql cluster 查看最大索引数_MySQL 数据库优化,看这篇就够了
3.优化表:使用OPTIMIZE关键字,如OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE user; LOCAL|NO_WRITE_TO_BINLOG都是表示不写入 ...
- mysql第二条减第一条_Mysql SQL优化
SQL优化规则 第一条: 尽量全值匹配,也就是说尽量使用等于 第二条: 最佳左前缀原则 如果是复合索引,要遵守最佳左前缀原则,指的是从最左侧列开始并且不跳过索引中的列 如果是按顺序使用的索引列,且有最 ...
- mysql属性配置提高查询_MYSQL性能优化-安装时优化参数配置提高服务性能
MYSQL性能优化一直是个头痛的问题,目前大多都是直接把页面html静态页面或直接使用了缓存技术,下面我就mysql本身的性能优化来分享一下. 安装时优化参数配置提高服务性能 在Linux下安装Mys ...
- 8核32g mysql性能_MySQL性能优化之参数配置
1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目 ...
- mysql的索引优化_MySQL索引优化与分析(重要)
建表SQL CREATE TABLE staffs ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR (24) NULL DEFAULT '' COM ...
- mysql sql优化书籍_MySQL SQL优化的正确姿势
大家好,我是知数堂SQL 优化班老师 网名:骑龟的兔子 已经很久没写文章了 今天分享一篇优化SQL 案例 slow query 里有如下 SQL 看下执行计划如下 从执行计划可以看出C表全表扫描了 那 ...
最新文章
- boot数据加解密 spring_SpringBoot 集成 Jasypt 对数据库加密以及踩坑
- Selenium3自动化测试——11. 下拉框处理
- python 断点下载_python多进程断点续传分片下载器
- esp8266 SDK开发之编译流程
- python 用队列实现栈
- Beanstalkd工作队列
- @ExceptionHandler
- java8 日期api_我们多么想要新的Java日期/时间API?
- 地平线机器人_地平线机器人CEO余凯:基于深度学习的自动驾驶之路
- SQL查询数据库结构信息
- matlab+text+extent,MATLAB字体及特殊符号标示方法
- Windows开机自动启动Virtual Box虚拟机(官方指南手册)
- c语言创建空顺序表的程序,用C语言编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算。...
- session cookie区别 客户端存储
- 2012年7月19日 解一元二次方程
- 演示:取证分析IPV6组播地址的构成原理
- 东北大学《传输原理》随堂练习
- matlab中minigrid,[转载][转载]matlab画地图的工具:worldmap和m_map
- Elasticsearch的安装,以及Springboot整合Elasticsearch
- 全功能Python测试框架:pytest
热门文章
- c c 语言编程项目实例,实例分享cmake编译一个简单c++项目(demo)
- nor flash和nand flash
- php mysql 字段自增_MySQL自增字段取值的详细介绍(附代码)
- MCGS 无限配方数据存储及U盘导入导出-第二集
- 鸿蒙硬件HI3861-I2C-PCF8591
- 异常检测1——python使用KNN模型进行异常检测
- java中的位移运算符_Java 位移运算符
- email 添加附件 java_Java发送email 带附件 | 学步园
- Codeforces 446C. DZY Loves Fibonacci Numbers【斐波那契+线段树】
- 测试Word2013发布博客