Mysql的优化技术

MySQL的优化技术mysql三范式1. 第一范式

确保数据表中每列(字段)的原子性。

如果数据表中每个字段都是不可再分的最小数据单元,则满足第一范式。

例如:user用户表,包含字段id,username,password

2. 第二范式

在第一范式的基础上更进一步,目标是确保表中的每列都和主键相关。

如果一个关系满足第一范式,并且除了主键之外的其他列,都依赖于该主键,则满足第二范式。

例如:一个用户只有一种角色,而一个角色对应多个用户。则可以按如下方式建立数据表关系,使其满足第二范式。

user用户表,字段id,username,password,role_id

role角色表,字段id,name

用户表通过角色id(role_id)来关联角色表

3. 第三范式

在第二范式的基础上更进一步,目标是确保表中的列都和主键直接相关,而不是间接相关。

例如:一个用户可以对应多个角色,一个角色也可以对应多个用户。则可以按如下方式建立数据表关系,使其满足第三范式。

user用户表,字段id,username,password

role角色表,字段id,name

user_role用户-角色中间表,id,user_id,role_id

像这样,通过第三张表(中间表)来建立用户表和角色表之间的关系,同时又符合范式化的原则,就可以称为第三范式。

Mysql的优化技术

配置mysql慢查询  在MySQL\MySQL Server 5.1\my.ini下面 找到mysqld,添加下面几行  [mysqld]  log-slow-queries="F:/Program Files (x86)/MySQL/mysql-slow.log"  #超过多少秒记录慢查询  long_query_time = 1   log-queries-not-using-indexes要保证数据库的效率,4个方面1、数据库设计2、sql语句优化3、数据库参数配置4、恰当的硬件资源和操作系统常用的2种引擎

三、MySQL存储引擎概述

1)MyISAM存储引擎

MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.MYI文件,分别存放了表的数据(.MYD)和索引数据(.MYI)。每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI文件中。

MyISAM支持以下三种类型的索引:

1、B-Tree索引

B-Tree索引,顾名思义,就是所有的索引节点都按照balancetree的数据结构来存储,所有的索引数据节点都在叶节点。

2、R-Tree索引

R-Tree索引的存储方式和b-tree索引有一些区别,主要设计用于为存储空间和多维数据的字段做索引,所以目前的MySQL版本来说,也仅支持geometry类型的字段作索引。

3、Full-text索引

Full-text索引就是我们长说的全文索引,他的存储结构也是b-tree。主要是为了解决在我们需要用like查询的低效问题。

2)Innodb 存储引擎

1、支持事务安装

2、数据多版本读取

3、锁定机制的改进

4、实现外键

下面的顺序也表现了这四个工作对性能性影响的大小