mysql数据库优化之表的设计和慢查询定位(1)_MySQL
一、数据库优化包括的方面 数据库优化是一种综合性的技术,并不是通过某一种方式让数据库效率提高很多,而是通过多方面的提高,从而使得数据库性能提高。 主要包括: 1、表的设计合理化(3范式) 2、给表添加合适的索引,如何使用索引 3、分表技术(水平分割、垂直分割) 4、定时清除数据垃圾,定时碎片整理 5、多用存储过程和触发器 6、对mysql配置进行优化 7、读写分离 8、mysql服务器硬件升级。 二、数据库的设计 步骤: 1、收集信息:与该系统有关人员进行交流,充分了解数据库需要完成的任务 ![]() 2、标识实体:具体存在的对象,名词。 比如:用户、帖子、回帖、板块 3、标识属性 1)一对一:两个表的主键是公共字段 2)一对多:主键和非主键建关系 3)多对一:非主键和主键建关系 4)多对多:非主键和非主键建关系 5、将E-R图转成表 1)将实体转成表,将属性转成字段 2)如果找不到一个合适的字段做主键,我们添加一个自动增长列做主键。 3)建立正确的关系 三、数据规范化 表设计出来以后,并不是最合理的结构,我们需要对表进行规范化(我们通过3范式来对表进行规范化) 先满足第一范式--再满足第二范式--再满足第三范式 1NF: 确保每列的原子性 第一范式用来规范化所有的字段,所有的字段都不可再分 注意:比如地址这个字段,如果不分类汇总、不排序,仅仅起一个字符串的作用,这时我们不拆(反3范式) 2NF: 非键字段必须依赖于键字段 如果一个关系满足1NF,并且除了主键以外其他列都依赖于该主键,则满足第二范式(2NF) 3NF: 消除传递依赖 |