笔记传智播客韩顺平老师mysql优化视频课程:
A、表的设计(3范式)
符合一范式,才能满足二范式,进一步满足三范式
关系性数据库:oracle/mysql/db2/informix/sysbase/sql server
非关系型数据库:(特点:面向对象和集合)
Nosql数据库:mongodb(特点是面向文档,介于关系和非关系型数据库)
一范式 : 表的列不能再分割,信息本身可以明确表示某个信息。(关系性数据库自动满足)如:
二范式:表中的数据唯一,不重复,(只要设置主键就可以满足,一般不含业务逻辑,自增长)
三范式:表中无冗余数据,如可以推导出来,就无需添加字段存放。
比如: 个人资料 和 个人班级 ,个人资料里面有姓名字段就无需再个人班级里面添加姓名字段。
注意:不一定要完全满足三范式,具体情况讨论,多在一对多情况,比如 某相册全部浏览量,不是每次调用都去查询叠加一次每张相片浏览量,在相册添加一个浏览量字段就好
B、sql语句优化
1.mysql数据库运行状态如何查询(如何查询用了多少时间、次数、连接)控制台
Show satus; 可以查看所有查询状态
Show status like ‘uptime’
Show status like ‘com_select’ ;
Show[session|global] status like ...如果不写[session|global],默认是session会话,mysql启用到现在用 global;
2.慢查询(mysql默认是10s)
查询慢查询时间:show variables like ‘long_query_time’;
修改慢查询时间:set long_query_time=1;
(跳过04.05视频慢查询)
C、添加适当索引(index)
数据库 mysql/mysql server5.5/data/temp 有些表有一个文件,一些有三个文件
Admin.frm(结构) admin.myd(数据) admin.myi(索引)
原理:从数据库读取数据 select * from article where id=500; 数据库服务器会遍历表单内索引数据返回多条数据。。
添加索引后是按二叉树算法进行。。。进行次数c和总检索数目n关系是 log2 n = c
普通
主键
唯一(unique)
全文(如百度)
复合
D、分表(水平分割、垂直分割)
E、读写分离(读分到多个操作,写update/delete/add)
F、存储过程
数据库(oracle、mysql、db2)三次结构[模块化编程、可以提高速度]
php程序 数据库管理系统 (编译、执行、缓存) 数据库
通常是 php程序传递到 数据库管理系统,系统编译-执行-缓存,从数据库读取数据返回给php,但php程序可以直接从数据库管理系统读取编译好的数据。
G、对mysql配置优化【配置最大并发数,调整缓存大小】
My.ini-- max_connection
H、服务器硬件升级
I、定时清除不需要数据,定时进行碎片整理【myisam尤其注重】