数据库的优化主要从4个方面来考量:
1,数据库设计
2,sql语句优化
3,数据库参数配置
4,恰当的硬件资源和操作系统
这个顺序也表现了这4个工作对性能的影响
1,数据库的概念怎么算合理呢?
答:要符合3NF 3范式(3个规范的模式,最高级别到6范式)有时,我们需要适当的逆范式。
2,sql语句的优化
3,数据库的配置
4,适当的硬件配置,和操作系统。
数据库的3范式问题:
1范式是对属性原子性的约束,要求原子性就是不可再分解。
只要是关系型数据库,就自动符合一范式了。
2范式,是对记录的唯一性约束,要求有唯一标识,即是实体的唯一性。
一般说,我们在表中设计一个主键即可。
3,在满足2范式的时候再要求是否符合3范式。
是对冗余性的约束。
字段信息可以根据关联的关系派生出来就可以了。
通常是通过外键的方式来处理。
但是有时候,为了开发提高运行的效率,可以降低范式标准。
冗余1->多的时候,应该尽量把冗余字段放在1的那边。
sql优化的一般步骤
1,通过show status命令了解各种sql的执行效率。
2,定位执行效率较低的sql语句,(重点select)
3,通过explain分析效率低的sql语句执行情况
4,确定问题并且采用相应的优化措施
面试题:sql语句有几类?
dd(数据定义语言) create alter drop
dml语句(数据操作语言)insert update select
Select 语句
Dtl 语句,数据事物语言 commit rollback save point
Dcl 语句 数据控制语句 grant revoke
show status; 这里面就是mysql一些状态,尤其以com打头的一些命令。
show status like ‘com%’;
等价于 show status session like’com%’;//显示控制台
show status global like ‘com%’;显示数据库从启动到查询
重点关心com_select com_insert com_update com_delect
说明从数据库启动,到现在进行过4次查询操作。
Connections :试图链接mysql 服务器的次数
Uptime:服务器工作的时间/秒数。
Show_queries:慢查询的次数,默认0
Show status like ‘Connections’;
Mysql 运行半年需要重启一下。
链接3次。
如果这个次数很大的话,就需要考虑并发的问题了。
Show status like ‘updatetime’;
显示mysql启
动的秒数
默认链接10秒中就会有一个慢查询。
show status like ‘slow_queries’;
mysql> show status like 'slow_queries';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Slow_queries | 0 |
+---------------+-------+
1 row in set (0.00 sec)
mysql>