java复习系列(2)--MySQL数据库优化
来源:互联网 发布:河北体育学院网络教育 编辑:程序博客网 时间:2024/06/06 10:53
MySQL数据库优化
。。复习到了第二天了,今天的注意是数据库优化,一下内容大多都是参考慕课网的教程,加上一些自己的看法。
第一范式
数据库表中的说有字段都是单一属性,不可再分的。这个单一属性是由基本的数据类型所构成的。
概括:列属性是不可再分的
第二范式
数据库中的表不存在非关键字段对任一候选键字段的部分函数依赖。
部分函数依赖是指存在着组合关键字中的某一关键字决定非关键字的情况。
(贼几把绕,还是不要看吧)
概括:不存在部分依赖,如(A,B)->C
第三范式
第三范式是在第二范式的基础上定义的,如果数据表中不存在非关键字段对于任意候选键字段的传递函数依赖则符合第三范式
概括:在第二范式的基础上,不存在传递依赖,如A->B->C
BC范式
在第三范式的基础之上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合BC范式
概括:在第三范式的基础上,主属性内部也不能部分或传递依赖
1.开启Mysql慢查询日志
2.可以使用MySQL自带的mysqldumpslow 分析慢查询日志,也可以自行安装pt-query-digest
3.重点来了—
1.SQL语句的优化
1.max()求最大值的情况,先对要查找的项建立一个索引,因为索引是顺序排列,通过索引的统计信息,很快就会知道最好一个值的情况 2.count(*)相对count(某一列)会把NULL值也统计进去 3.将子查询的方式优化成join方式查询,如果出现一对多的关系可能会出现重复,此时使用distinct去重 4.group by可以通过子查询设计过滤条件 5.对于limit查询,可以可以先使用索引或者主键的列进行order by操作,继续有优化的话,可以记录上次返回的主键,在下次查询时使用主键过滤(要求主键是连续的,如果不连续可以自己建一个列用于查询)
2.索引的优化
1.如何选择合适的列建立索引? (1)在where从句,group by从句,order by从句,on 从句中出现的列 (2)索引字段越小越好 (3)离散程度大的列放在联合索引的前面 2.使用pt-duplicate-key-checker工具检查重复冗余索引 (比如索引包含主键的) 3.删除不用索引
3.数据结构的优化
1.选择合适的数据类型 (1) 使用可以存下你的数据的最小的数据类型 (2)使用简单的数据类型 (3)尽可能的使用not null定义字段 (4)尽量少用text类型,非用不可时最好考虑分表 2.表的范式化和反范式化 (范式化一般指的是第三范式) (反范式化是指为了查询效率的考虑吧原来符合第三范式的表适当的增加冗余,以达到优化查询效率的目的,反范式化是一种以空间来换取时间的操作) 3.表的垂直拆分 (1)把不常用的字段单独存放到一个表中 (2)把大字段独立存放到一个表中 (3)把经常一起使用的字段放到一起 4.表的水平拆分 (表的水平拆分是为了解决单表的数据量过大的问题,水平拆分的每一个表的结构都是完全一致的。前台查询用拆分后的表,后台用汇总表)
4.系统配置优化
1.操作系统配置优化 (1)增加tcp支持的队列数 (2)减少断开连接时,资源回收 (3)打开文件数的限制 (4)关闭软件防火墙 2.MySQL配置文件 (配置参数太多了,就先一下缓存池) 3.第三方配置工具 (Person Configuration Wizard)
5.服务器硬件优化
1.推荐选择单核较快的cpu 2.Disk IO优化,如RAIO1+0
阅读全文
0 0
- java复习系列(2)--MySQL数据库优化
- mysql系列:数据库优化
- Java 数据库系列教程--MySQL优化与sql优化
- Mysql数据库优化系列(一)------Mysql服务器优化思路
- Mysql数据库优化系列(一)------Mysql服务器优化思路
- mysql 优化系列(一) Mysql数据库引擎性能测试
- Java知识点复习系列(2)
- MySQL 数据库性能优化之SQL优化(这是 MySQL数据库性能优化专题 系列的第四篇文章)
- MySQL 数据库性能优化之索引优化(这是 MySQL数据库性能优化专题 系列的第三篇文章)
- MySQL 数据库性能优化之表结构优化(这是 MySQL数据库性能优化专题 系列的第二篇文章)
- MySQL 数据库性能优化之缓存参数优化(这是 MySQL数据库性能优化专题 系列的第一篇文章)
- 数据库复习(2)
- Mysql 数据库优化2
- mysql数据库优化2
- Mysql数据库优化系列(四)------表的优化与列类型选择
- Mysql数据库优化系列(五)------索引优化策略之面试题
- MySQL优化系列之数据库schema设计优化
- MySQL数据库的数据类型(复习2)
- Angular4中调用js代码
- matlab2016a+win10+无CPU+caffe测试
- ThinkPHP5 集成阿里云SMS短信服务--验证码发送
- CART分类树算法与随机森林
- MyBatis初窥:自定义TypeHandler处理枚举
- java复习系列(2)--MySQL数据库优化
- 博客基于Github的hexo搭建
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?
- 服务器带宽
- 下一步优化点
- Fiddler死活抓不了HTTPS包解决办法
- 线程安全,有状态,无状态的对象
- 数组(API)
- MySQL高可用架构之MHA