一、关系型数据库优化
1、 数据库(表)设计合理,要符合3规范。
2、 sql语句的优化
3、 数据的配置
4、 适当的硬件和操作系统
数据的3规范模式(3NF)
1NF 就是具有原子性,不可分割(只要使用关系型数据库,就自动符合)
2NF 在满足1NF的基础上,在考虑此点。对记录的唯一性约束,同一张表不可能出现完全相同的记录。
这一点可以通过主键进行控制。
3NF 在满足2NF的基础上,对字段冗余性的约束,即不能由其他字段派生出来。字段信息可以通过关联的关系进行派生即可。有时需要降低范式标准。
通常通过外键的形式来解决
逆范式:
(相册功能对应的数据库设计)
每次图片更新 相册点击次数顺便更新一次
不合理的逆范式
冗余规则,1对多的关系中,尽量把逆范式的内容放在1这边。
sql 优化的一般步骤
1、 通过show status命令 了解各种sql 的执行频率。
2、 定位执行频率较低的sql语句,重点是在select 语句。
3、 通过explain 分析低效率的sql 语句执行情况。
4、 确定问题并采取相应措施。
sql语言
ddl(数据定义语言) [create alter drop]
ddml(数据操作语言)[inert rollback update]
select
dtl(数据事务语言)[commit rollback savepoint]
dcl(数据控制语句) [grant revoke]
show status命令
该命令显示mysql数据库当前状态,主要关心以com开头的命令。
show status like ‘com%’;
显示局部// 控制台的命令使用次数
show status like ‘com%’;
相当于
show session status like ‘com%’;
全局// 数据库从启动到查询的次数
show global status like ‘com%’;
例如:命令select 就是 Com_select
显示连接数据库的次数
show status like ‘ Connection’;
Uptime服务器工作时间(秒)
how_queries:慢查询次数(默认10秒)
优化的重点是 慢查询
show variables like‘long_query_time’;