关闭

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

标签: 数据库表结构优化MySQL数据库
872人阅读 评论(0) 收藏 举报
分类:


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)统计及后台报表的操作

2
0
查看评论

数据库的架构设计与性能优化

本文首发于阿里云&《程序员》杂志联合出品的《凌云》专刊中。 作者: 杭州湖畔网络技术经理 王鑫鹏 杭州湖畔网络技术有限公司是一家专业提供SaaS化电商ERP服务的创业公司,主要用户群体为经营淘宝、天猫、京东等主流电商平台、自建商城、线下渠道的商家及中小企业。作...
  • liu870915
  • liu870915
  • 2016-07-05 15:07
  • 1596

数据库SQL优化大总结之 百万级数据库优化方案

网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。 这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。   1.对查询进行优化,要尽量避免全...
  • zhushuai1221
  • zhushuai1221
  • 2016-06-23 09:43
  • 25438

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

数据库设计及使用是WEB开发程序员必备的一项基础技能,在大数据量和高并发场景,合理的数据结构及SQL查询优化对项目来说都会显得格外重要。大部分有经验的程序员都能了解到,程序的瓶颈往往不在程序本身,而在数据访问层。造成数据访问效率低下的原因有很多,如何解决这些问题,直接影响到应用的稳定性、健壮性。
  • huyanping
  • huyanping
  • 2014-10-06 16:51
  • 9278

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

思维导图   点击图片,可查看大图。    介绍   情况:如果你的表结构设计不良或你的索引设计不佳,那么请你优化你的表结构设计和给予合适的索引,这样你的查询性能就能提高几个数量级。——数据越大,索引的价值越能体现出来。   我们要...
  • aya19880214
  • aya19880214
  • 2015-05-20 15:48
  • 1775

MySQL逻辑架构及性能优化原理

说起MySQL的查询优化,相信所有人都了解一些最简单的技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要。 MySQL逻...
  • fuzhongmin05
  • fuzhongmin05
  • 2017-04-28 13:26
  • 1180

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

很多人都将 数据库设计范式 作为数据库表结构设计“圣经”,认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证性能优异同时还能满足扩展性要求。殊不知,在N年前被奉为“圣经”的数据库设计3范式早就已经不完全适用了。这里我整理了一些比较常见的数据库表结构设计方面的优...
  • bzhxuexi
  • bzhxuexi
  • 2015-02-09 15:51
  • 2500

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

优化目标 减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。 降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑...
  • renzhenhuai
  • renzhenhuai
  • 2013-06-19 14:47
  • 5857

MYSQL开发指南(基础篇,性能优化篇,架构设计篇)

  • 2014-06-26 10:39
  • 2.85MB
  • 下载

MySQL应用架构优化-实时数据处理

http://www.ttlsa.com/mysql/mysql-application-architecture-performerce-1/ 1.1. 场景 在和开发人员做优化的时候,讨论最多的应该是结合应用场景编写出合适的SQL。并培训开发应该如何编写SQL让My...
  • lcathm
  • lcathm
  • 2016-09-30 18:04
  • 514

数据库优化1(逻辑结构)

对数据库结构和事务特性的理解
  • breaknull
  • breaknull
  • 2015-08-13 20:42
  • 790
    个人资料
    • 访问:33243次
    • 积分:833
    • 等级:
    • 排名:千里之外
    • 原创:60篇
    • 转载:3篇
    • 译文:0篇
    • 评论:3条
    最新评论