`

mysql数据库设计

阅读更多

1. 适度冗余: 让query尽量减少join,如果要减少join,就不可避免的需要通过表字段的冗余来实现,虽然在设计上有违数据库的范式.
通过多次简单的查询来拆分复杂的join操作,给性能所带来的效果是巨大的.

 

在数据表(如订单orders表)里只存储了用户的ID,我要通过这个ID值得到用户昵称该怎么办呢?一个普遍的解决方法是通过联接(join),在查询时,通过id这个唯一条件联接两个表,从而取到用户的昵称。

这样确实是没问题,我也一直觉得这样是最好的方案,扩展方便,当要更新用户信息时,程序中要修改的地方很少,但是随着数据库里数据不断增加,百万,千万, 同时,用户表的数据肯定也在不断的增加的,它可能是十万,百万。这个时候,你会发现两个表通过联接来取数据就显得相当费力了,可能你只需要取一个 nickname这个用户昵称属性,你就不得不去联一下那个已经几十万的用户表进行检索,其速度可想而知了。

 

这个时候,你可以尝试把nickname这个字段加到orders这个订单表中,这样做的好事是,当你要通过订单表呈现一个订单列表时,涉及用户的部分可 能就不需要再进行联接查询了。当然,有利就有弊,这样做的弊端就是,当你尝试更新用户信息时,你必须记得用户信息表里当前被更新的字段中,有哪些是冗余字 段,分别属于哪些表,找到他们,然后加入到你的更新程序段中来。这个是程序中的开销,开销在开发人员的时间上了。至于这样做是否值得,就得看具体情况而定 了。

 

选择哪一种呢?如果你是一个美学狂人,并且财大气粗,非要使用第一种方案,也没关系,这种方案的短板并非不可救药的。比如,你可以增加服务器,从数据库集 群入手,进行读写分离,读的时候可以将压力分散到不同的数据库服务器上,这样也可以获得很好的性能,只是多付出了硬件成本和维护成本。或者,你可以在数据 库前端架设Memcached之类的缓存服务,减少读写数据库的次数,也可以达到同样的效果。问题在于你确定你需要缓存之类的东西。

 

2. 大字段垂直拆分: 要满足这些字段的使用频率远小于那些频繁使用的字段.它和主表之间存一一对应的关系,在join操作时,对性能的影响是比较小的. 原理是,数据库中的读取操作是基于记录,而不是基于字段,这样当我们要读取的数据中包括不需要的字段时,此时数据库其实也花费了时间在那些块头大但实际并 不需要的字段上面.一些原则:如果某个表上的一些字段被频繁的访问,而这个表的某些字段却相对来说比较的”冷清”,那么我们可以通过表的拆分来提升数据库 性能(主要是减少了硬盘的IO操作).

 

3. 合理的数据类型: 使用合理的数据类型,可以减少存储空间,也可以降低IO的操作.同时对于要比较的数据类型,可以加快速度.如TIMESTAMP只 使用四个字节来存放时间,而DATETIME,DATE等使用八个字节.当然TIMESTAMP只可以存储1970之后的时间,如果应用中不需要1970 之前的时间,完全可以采用它.

 

 

 

分享到:
评论

相关推荐

    MySQL数据库设计.pdf

    从给定的文件信息中,我们可以提取并深入探讨多个关于MySQL数据库设计的重要知识点,包括数据库的基本概念、MySQL数据类型、MySQL运算符、SQL语句、数据库设计步骤以及如何使用PHP脚本来操作MySQL服务器。...

    Mysql数据库设计规范

    在使用Mysql数据库时,首先要对MySQL数据库的设计规范有所了解,有了深刻的了解之后才能设计出更加规范和文档的数据库

    《MySQL数据库设计与应用》-习题参考答案及操作题源代码-张成叔版.docx

    MySQL数据库设计与应用习题参考答案及操作题源代码 本资源为《MySQL数据库设计与应用》习题参考答案及操作题源代码,涵盖了MySQL数据库设计与应用的多个方面,包括数据库设计、数据库部署、数据库管理、SQL语句编写...

    使用ERwin进行MYsql数据库设计

    使用 ERwin 进行 MySQL 数据库设计 ERwin 是一个常用的数据库设计工具,支持多种数据库管理系统,但遗憾的是,它不支持 MySQL 数据库。然而,MySQL 数据库是一种流行的关系型数据库管理系统,具有高性能、可靠性和...

    mysql数据库导出设计文档工具_全jar

    总结来说,"mysql数据库导出设计文档工具_全jar" 是一个实用的工具,它简化了MySQL数据库设计文档的生成过程,特别适合Windows用户。使用这个工具,开发者和DBA可以更加专注于数据库的逻辑设计和实际操作,而不是...

    PHP培训之MySQL数据库设计

    PHP培训之MySQL数据库设计 ,有助于了解Mysql数据库设计

    mysql数据库设计案例.zip

    mysql数据库设计案例.zip

    全国计算机等级考试二级MySQL数据库程序设计大纲(2018版)

    全国计算机等级考试二级MySQL数据库程序设计大纲(2018版)涵盖了对数据库...通过以上大纲知识点的学习,考生应该能够满足考试的要求,并在考试中展现自己对MySQL数据库设计、编程、管理、维护和应用开发的掌握程度。

    MySQL数据库设计规范

    细解mysql数据库设计,命名方式、常用SQL语句,及数据库优化

    mysql数据库设计规范

    mysql数据库设计规范,对于初级开发人员设计数据库有指导性作用,建议初级开发人员当做工具书使用

    《MySQL数据库原理、设计与应用》课后习题及答案黑马程序员编著

    《MySQL数据库原理、设计与应用》课后习题及答案 黑马程序员编著 答案都是正确的,因为是老师给的资源。 如果不想下载,也可以去我的博客看,一模一样的。 ...

    mysql数据库设计与开发视频教程详细完整版

    内容包括: 第一章:走进mysql数据库 第二章:服务器与客户端 第三章:表数据查询 第四章:管理数据库和表 第五章:操作表数据 第六章:表的连接 第七章:预处理语句 第八章:使用外键 第九章:使用事务。...

    Mysql数据库文档生成工具(含使用说明)

    MySQL数据库文档生成工具是一款高效实用的软件,专为MySQL数据库设计者和开发者提供方便,能够自动生成详尽的数据库设计文档。这款工具极大地简化了在项目验收阶段对数据库设计进行整理和呈现的工作流程,尤其适合...

    MySQL 数据库设计复习笔记及项目实战

    本篇笔记主要聚焦于MySQL数据库设计的基础知识与实战经验,结合PHP系统中的常见数据库架构,以提高数据库设计的效率和性能。 一、设计工具选择 MySQL Workbench 是MySQL官方推荐的数据库设计和管理工具,尤其适用...

    461793254428015网上商城系统MySql数据库设计.sql

    461793254428015网上商城系统MySql数据库设计.sql

    mysql数据库参考文献汇总.pdf

    mysql数据库参考文献汇总.pdf

    图书管理系统数据库设计-MYSQL实现.docx

    图书管理系统数据库设计是一个重要的环节,它涉及到数据的组织、存储和检索,对于高效管理图书馆的图书流通至关重要。在这个系统中,我们使用MySQL作为数据库管理系统,它是一个广泛应用的关系型数据库,支持多种...

    MYSQL数据库命名及设计规范

    MYSQL数据库设计的设计原则是遵守 Third Normal Form(3NF),以确保数据库的标准化和规范化。3NF是指每个表只包含其本身基本的属性,而不是它们本身所具有的属性。这种设计原则可以消除数据库中的数据冗余,提高...

Global site tag (gtag.js) - Google Analytics