mysql数据库的优化

对于一个以数据为中心的应用,数据库的好坏直接影响到程序的性能,因此数据库性能至关重要。一般来说,要保证数据库的效率,要做好以下四个方面的工作:
1、数据库设计
2、sql语句优化(索引,常用小技巧)
3、数据库参数配置(inodb_additional_mem_pool_size = 64M innodb_fuffer_pool_size = 1G;myisam:key_buffer_size设置大点)
4、恰当的硬件资源和操作系统(机器内存超过4g,采用64位mysql操作系统否则用32位mysql,读写分离。)
这个顺序也表现了这四个工作对性能影响的从大到小

1、数据库设计:

第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;(只要是关系型数据库都满足1NF)
第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;
第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。 没有冗余的数据库设计可以做到。

1NF :就是具有原子性,不可分割.(只要使用的是关系性数据库,就自动符合)

2NF: 在满足1NF 的基础上,我们考虑是否满足2NF: 只要表的记录满足唯一性,也是说,你的同一张表,不可能出现完全相同的记录, 一般说我们在 表中设计一个主键即可.

3NF: 在满足2NF 的基础上,我们考虑是否满足3NF:即我们的字段信息可以通过关联的关系,派生即可.(通常我们通过外键来处理)

SQL优化的一般步骤:
1、通过show status命令了解各种SQL的执行频率。
2、定位执行效率较低的SQL语句-(重点select)
3、通过explain分析低效率的SQL语句的执行情况
4、确定问题并采取相应的优化措施
面试题 :sql语句有几类?
1、ddl (数据定义语言) [create alter drop]
2、dml(数据操作语言)[insert delete upate ]
3、select(重点)
4、dtl(数据事务语句) [commit rollback savepoint]
5、dcl(数据控制语句) [grant  revoke]

show status命令

show status like 'Com%';等价于show session  status like 'Com%';  //显示当前控制台的情况
show global  status like 'Com%'; //显示数据库从启动到 查询的次数

1、show session status like 'Com_select'; //显示当前启动数据库执行多少次查询语句
2、show global status like 'Com_select'; //显示数据库启动到目前使用了多少次查询语句
3、show global status like 'Com_insert'; //显示数据库启动到目前使用了多少次插入语句
4、show global status like 'Com_uptate'; //显示数据库启动到目前使用了多少次更新语句
5、show global status like 'Com_delete'; //显示数据库启动到目前使用了多少次删除语句
常用的了解数据库的基本情况的命令:
show status like  'Connections';//显示连接数据库次数
show status like  'Uptime';//服务器工作了多长时间(单位:秒)
show status like  'Slow_queries';//慢查询多少次

show variables like 'long_query_time';//显示慢查询情况默认是10秒
set long_query_time=1;//设置成1秒(当查询时例如:select * from user(百万量数据)执行完用了3秒,就会被记录到慢查询日志中)

 

待续。。。。

posted @ 2017-06-22 22:26  丶老中医  阅读(122)  评论(0编辑  收藏  举报
一切已经开始©2018 丶老中医