MySQL性能优化四之数据库结构优化

原创 2016年08月29日 12:12:41


1.选择合适数据类型

1.1.使用可以存储你数据类型的最小数据类型。

1.2.使用简单的数据类型。

1.3.尽量使用NOT NULL定义字段。

1.4.尽量少用大的类型(text),非用不可使用从表拆分出来。

1.5.例子:

1.5.1.利用Int类型存储日期类型:利用FROM_UNIXTIME()函数(int转日期类型)和UNIX_TIMESTAMP()函数(日期转为int类型)。

1.5.2.IP地址存储:使用BIGINT类型,利用INET_ATON()函数和INET_NTOA()函数(转回成IP)。

2.表的范式的优化

2.1.数据库三大范式:

1)每一列都是不可分割的基本数据项,同一列不能有多个值。

2)每个实例(行、记录)能够唯一的区分(主键)。

3)数据库表不包含其他数据库表中非主键关键字信息(减少字段冗余)。

3.表的反范式的优化

1)为了查找效率把符合第三范式的表增加适量的冗余,达到优化查询的目的,反范式优化是以空间换取时间的操作(严格遵循第三范式会导致很多使用临时表的SQL操作,会增加IO操作降低查询效率;此时通过SQL优化是达不到我们优化目的的只能修改表结构增加适量的冗余)。

4.表的垂直拆分(把含有多个列的表拆分成多个表,解决表宽度问题)

4.1.把不常用的字段单独放在同一个表中

4.2.把大字段独立放入一个表中

4.3.把经常使用的字段放在一起

5.表的水平拆分(为了解决数据表中数据过大的问题,水平拆分每一个表的结构都是完全一致的)

5.1.如何将数据平分到N张表中的常用方法:

1)ID进行hash运算,如果要拆分成5个表,mod(id,5)取出0~4个值

2)针对不同的hashID将数据存入不同的表中

5.2.水平拆分带来的问题和挑战

1)跨分区表的数据查询

2)统计及后台报表的操作

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

SQL查询优化——数据结构设计

数据库设计及使用是WEB开发程序员必备的一项基础技能,在大数据量和高并发场景,合理的数据结构及SQL查询优化对项目来说都会显得格外重要。大部分有经验的程序员都能了解到,程序的瓶颈往往不在程序本身,而在...

大型网站数据库优化及浅析大型网站的架构(转)

大型网站数据库优化千万人同时访问的网站,一般是有很多个数据库同时工作,说明白一点就是数据库集群和并发控制,这样的网站实时性也是相对的。这些网站都有一些共同的特点:数据量大,在线人数多,并发请求多,pa...
  • iflash50
  • iflash50
  • 2009年06月19日 10:09
  • 11115

mysql数据库性能优化(包括SQL,表结构,索引,缓存)

优化目标 减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考...

MySQL表结构优化、数据类型选择方法

思维导图   点击图片,可查看大图。    介绍   情况:如果你的表结构设计不良或你的索引设计不佳,那么请你优化你的表结构设计和给予合适的索引,这样你的查询性能就能提高几个数量级。——...

MySQL数据库表结构设计优化技巧总结

很多人都将 数据库设计范式 作为数据库表结构设计“圣经”,认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证性能优异同时还能满足扩展性要求。殊不知,在N年前被奉为“圣经”的数据库设...

数据库性能优化二:数据库表优化

数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第二部分   数据库性能优化二:数据库表优化     优化①:设计规范化表,消除数据冗余   数据库范式是确保...
  • llwszjj
  • llwszjj
  • 2015年07月07日 22:34
  • 1165

MySQL数据库的体系架构

MySQL数据库的体系架构如下图所示: 从上图中可以看出,MySQL主要分为以下几个组件: 连接池组件管理服务和工具组件SQL接口组件分析器组件优化器组件缓冲组件插件式...

MySQL数据库性能优化之表结构优化

由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO 的时候是以 page(block)的方式,也就是说,如果我们每条记录所占用的空间量减小,就会使每个page中可存放的数据行数增大...
  • igoone
  • igoone
  • 2012年05月04日 16:07
  • 163

【Day60】MySQL 数据库性能优化之二(表结构优化)

由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO 的时候是以 page(block)的方式,也就是说,如果我们每条记录所占用的空间量减小,就会使每个page中可存放的数据行数增大...

MySQL 数据库性能优化之表结构优化

作者:Sky.Jian | 可以任意转载, 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明 链接:http://isky000.com/database/mysql-pe...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL性能优化四之数据库结构优化
举报原因:
原因补充:

(最多只允许输入30个字)