首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL物理设计

设计结构之后, 就需要进行物理设计, 将实体及属性映射到具体表和列. 而合理选择存储引擎和列类型也是数据库设计十分重要一个环节....物理设计包括, 命名规范, 存储引擎, 列字段选择, 主键设计以及主键生成算法. 一. 命名规范 首先在定义数据库,,字段时一定要公司命名规范; 二....如存储金钱相关数据, 那最好是decimal类型 列类型 存储空间 是否精确类型 float 4字节 否 double 8字节 否 decimal 每4字节存9个数字,小数点占1个字节 是 3.3 字符串类型 MySQL...主键选择 应选择尽可能小且顺序增长数字类型, 并且主键可以与业务主键不同....原因是主键上, 会自动建立主键索引(B+树), 如果是自增数字类型, 只需要在索引尾部添加数据即可, 性能开销很小; 当主键采用字符串类型时, 占用空间会远大于数字类型.

1.3K10

MySQL - 高效设计MySQL

---- 设计符合 2NF 以订单信息为例,讲述如何设计一个符合 2NF 首先,我们看原始订单信息,如下图所示 ?...数据变更速度快 【缺点】 按照范式规范设计,等级越高范式设计出来数量越多。...对于一些特殊业务场景,范式设计,无法满足性能需求。此时,就需要根据业务场景,在范式基础之上进行灵活设计,也就是反范式设计。...使用原则和设计规范 聊完范式,接下来我们看看 MySQL 使用中一些使用原则和设计规范。...这些字段类型,在 MySQL 数据库检索性能不高,很难使用索引进行优化。如果必须使用这些功能,一般采取特殊结构设计,或者与程序结合使用其他字段类型替代。

3.3K12
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL设计规范

    规范总结 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字【设计后逐一排查】 所有必须使用 Innodb 存储引擎,数据库和字符集统一使用...://dev.mysql.com/doc/mysqld-version-reference/en/keywords-8-0.html 建议在设计数据之后逐一排查有没有使用关键字。...数据库基本设计规范 1....避免使用 TEXT,BLOB 数据类型,最常见 TEXT 类型可以存储 64k 数据 建议把 BLOB 或是 TEXT 列分离到单独扩展MySQL 内存临时不支持 TEXT、BLOB 这样大数据类型...【MySQL 内存临时不支持 TEXT、BLOB 这样大数据类型,如果查询中包含这样数据,在排序等操作时,就不能使用内存临时,必须使用磁盘临时进行。

    1.5K10

    Mysql实例 设计

    二.设计表格 公司 公司名称 公司编号(自增主键) 电话号码 A 1001 xx B 1002 xx 广告 广告编号 有该广告公司编号(自增主键) 广告收费/点击一次 1 1001 2 2 1001...3 3 1002 2 点击 广告编号 该广告发送给浏览者日期 1 101101 2 101102 1 101323 3 111232 三.查询 查都有哪些公司 直接查询公司 公司名称 字段...between 100000 and 199999; 最后做个计算即可 四.分析 结构设置 目前有3张,基本满足业务需求,但未来查询更多,需要重新设计主键位置,结构。...当数据庞大,首当其冲是点击,可能一天有几万次记录写入,这张将变得庞大,可以考虑将根据月份进行拆分。...sql语句 刚才查询A公司需要交费多少,比较繁琐,需要操作多次,可以将sql语句进行优化,查看消耗时间是多少,找出最优语句和方法。 其它功能 当前除了基本查询,还可以进行数据分析。

    1.3K20

    MySQL设计

    在面对数亿条数据,每条数据包含数百个字段情况下,以下是我能想到设计数据库时候需要注意内容,不足之处欢迎批评指正:1....数据库设计结构设计垂直分割:将大分割成多个相关性较小,以减少单个字段数量。这有助于提高查询效率和降低冗余。规范化:合理使用规范化,将重复数据抽取成独立,以减小数据冗余。...分库分如果数据量仍然巨大,可以考虑分库分策略,将数据划分到不同数据库或中。4. 数据分区根据时间、范围等条件对数据进行分区,以提高查询效率。5....-- 例子:设置缓冲池大小SET GLOBAL innodb_buffer_pool_size = 2G;设计大规模数据集数据库是一个综合性任务,需要考虑到数据结构、索引、查询需求以及数据库引擎特性...在设计时,充分了解数据访问模式,根据查询特点合理设计索引,通过适当规范化和分区来优化存储结构,最终达到高效查询和存储效果。我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

    18010

    MySQL设计优化

    MySQL数据库中,设计优劣同样对性能有非常重要影响。本节将介绍设计优化方法,包括巧用多表关系、结构设计优化和拆分等。...反范式设计好处是减少了数目,从而减少了join操作及外码和索引数目,但是可能带来数据完整性问题。另外,反范式设计虽然能加快查询速度,但是对数据修改却需要更多成本。...结构设计优化 在进行结构设计时,选择合适数据类型,慎用NULL值,适度冗余,适当进行拆分等方法对提高性能是至关重要结构设计优化采取措施通常包括以下几个方面。...NULL值不利于索引,MySQL难以优化可为NULL列查询。当可为NULL列被索引时,每个索引记录需要一个额外字节用于标识其是否可空。如果某列计划要创建索引,要尽量避免将其设计成可为NULL。...图4 垂直拆分效果 说明:本文节选自北京理工大学出版社新出版MySQL从入门到部署实战(视频教学版)》。

    17610

    mysql设计规范

    20个,字段过多,中保存数据可能会很大,查询效率会降低。...大拆成小,让他们主键相同即可。...尽可能使用 not null定义字段将字段设置成空字符串或者常量值not null防止出现空指针问题null值存储也需要额外空间,导致比较运算更为复杂,是优化器难以优化sqlnull值可能会导致索引失效设计索引有查询条件字段...,一般要加索引单索引不超过5个区分度不高字段,不添加索引(性别)避免索引失效情况(mysql内置函数)索引过多,选用联合索引优化不使用外键关联使用外键存在性能问题、并发死锁问题、使用起来不方便等...mysql对于存储过程、触发器等还不是很成熟,没有完善出错记录处理,不建议使用sql编写优化经验查询尽量不要使用select *查询结果只要一条或者只要最大/小一条记录,建议使用limit 1避免

    24330

    MySQL设计踩过坑!

    希望我能说说我在数据库设计时踩过坑。那么,我们今天就来聊聊我在数据库设计时踩过坑,以及现在对数据库设计一点建议。希望能够帮助到你。...注释 之前在数据库设计时,就没有加注释习惯,造成直接后果是:数据库设计阶段一过,后续数据使用中,字段名就全靠猜了。我们写代码是知道注释是非常重要,同样在设计数据库时,注释也非常重要!...索引怎么加,索引重不重要,可以查看《写会MySQL索引》一文进行查看!唉,我就吃过不少没加索引或忘记添加索引亏,记忆犹新!!!...小结 以上是我数据库设计时躺过坑,下面小结精简版本一下: 允许保存表情,存储格式设计为utf8mb4,避免使用utf8。 选择合适数据类型。...以及字段上添加合理注释。 数据库设计时,一定要在外键字段以及合适字段上加索引。 上面是我数据库设计时,遇到踩过坑以后经验之谈。有些坑当时还真花了不少时间来填补。

    1.1K80

    MySQL周期管理设计

    这是学习笔记第 2038 篇文章 关于MySQL周期管理,近期做了初步设计,总体上是希望把周期管理和业务同学对接起来,实现流程化管理。...对于整体设计方面,需要开发后端API,API列表如下: 周期表列表 周期创建 周期属性变更 周期批量变更接口 周期数据清理接口 巡检任务 大数据提取接口 即时通讯提醒接口 对于模型设计是重中之重...,也能够决定我们周期管理存储设计优劣。...模型方面考虑了如下一些Mysql_dailytable 周期 Mysql_cycle_table_manage_log 周期维护日志(包含配置创建,属性修改) Mysql_cycle_table_ddl_log...周期变化历史记录 Mysql_cycle_table_inspection_log 模型详细设计如下: Mysql_dailytable id ip_addr db_port db_name Operator_method

    1.8K30

    MySQL设计小技巧

    前言: 在我们项目开发中,数据库及设计可以说是非常重要,我遇到过很多库设计比较杂乱项目,像名、字段名命名混乱、字段类型设计混乱等等,此类数据库后续极难维护与拓展。...我一直相信只有优秀设计才能发挥出MySQL最大性能,前面有篇文章也分享了数据库使用规范,本篇文章主要讲几个库设计小技巧,希望对大家有所启发。...MySQL数据库内置了两个IP相关函数INET_ATON()、INET_NTOA(),可以实现 IP 地址和整数类型转换。...这些案例都是常常见到场景,对于int类型及时间类型选取,本文也根据常见场景给出相关建议,希望大家读完这篇文章有所收获。其实库设计是件复杂事情,需要在项目前期多方人员共同规划讨论。...还是那句话,只有优秀设计才能发挥出MySQL最大性能。 — END —

    2.8K31

    21个MySQL设计经验准则

    前言 大家好,我是捡田螺小男孩。 作为后端开发,我们经常需要设计数据库。整理了21个设计MySQL经验准则,分享给大家,大家看完一定会有帮助。...设计时,评估哪些字段需要加索引 首先,评估你数据量。如果你数据量只有一百几十行,就没有必要加索引。否则设计时候,如果有查询条件字段,一般就需要建立索引。...对于MYSQL来说,存储过程、触发器等还不是很成熟, 并没有完善出错记录处理,不建议使用。 18. 1:N 关系设计 日常开发中,1对多关系应该是非常常见。...我们就可以设计一个借书,包含图书主键,以及读者主键,以及借还标记等字段。 19. 大字段 设计时候,我们尤其需要关注一些大字段,即占用较多存储空间字段。...在MySQl中,这种方式保存设计方案,其实是不太合理。这种非常大数据,可以保存到mongodb中,然后,在业务保存对应mongodbid即可。

    1.7K21

    MySQL设计原则和聚合函数

    所属专栏:MySQL学习 1. 设计原则 1. 从需求中找到类,类对应到数据库中实体,实体在数据库中表现为一张一张,类中属性对应着字段 2. 确定类与类对应关系 3....,那么就称为只存在部分函数依赖,对于这样情况就不满足第二范式 接下来看一个正面例子: 对于这样设计,每张都有非主键字段,都强依赖与主键,第三个存在复合主键,非主键依赖于两个主键字段,不存在部分函数依赖...更新异常 如果需要修改MySQL学分,那么就需要修改中所有关于MySQL记录,如果说只有部分数据修改成功,剩余还是原来数据,就会出现数据不一致,造成数据混乱 3....学号 姓名 年龄 学院编号 这样设计,两张都依赖与自己主键,学生可以通过外键与学院之间建立关联关系 3....三种关系 3.1 一对一关系 例如设计一个登录界面,输入用户名和密码登录成功之后,显示欢迎用户,这样场景一般对应两个实体,用户和账号,并且一个用户只对应一个账号,就是一对一关系 针对一对一关系设计时有两种方式

    9510

    新零售mysql设计(快递 退货

    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 sql 快递: 解析: 数据 退货 解析: 数据 sql 快递: CREATE TABLE t_delivery...一个快递是吧。也就是这个包括送快递这块方方面面对吧,那这个快递是送什么。是不是订单里面的商品。所以得包括订单id对吧。也包括商品对吧。...那这个订单送过程中,是不是需要质检员检测有没有质量问题破损什么。对吧。发货给我们快递小哥也需要对吧。快递单号也需要对吧。快递费也需要。谁送也就是快递公司编号也需要。...关联别的需要索引。...这个订单退货商品是什么。有什么原因导致退货。要质检员字段原因是因为要核实是不是质量问题还是说明问题导致要退货。那退款金额是多少。是全部还是部分。退款方式是那些退款成没成功。是不是都要有啊.

    521110

    MySQL 高性能设计规范

    相关文章: MySQL高性能设计规范:http://www.jianshu.com/p/f797bbe11d76 MySQL EXPLAIN详解:http://www.jianshu.com/p/ea3fc71fdc45...image.png 良好逻辑设计和物理设计是高性能基石, 应该根据系统将要执行查询语句来设计schema, 这往往需要权衡各种因素。...那么使用更短列有什么优势吗? 事实证明有很大优势。 更长列会消耗更多内存, 因为MySQL通常会分配固定大小内存块来保存内部值。 尤其是使用内存临时进行排序或操作时会特别糟糕。...4.BLOB和TEXT类型 BLOB和 TEXT都是为存储很大数据而设计字符串数据类型, 分别采用 二进制和字符方式存储 。...二、结构设计 1.范式和反范式 对于任何给定数据通常都有很多种表示方法, 从完全范式化到完全反范式化, 以及两者折中。 在范式化数据库中, 每个事实数据会出现并且只出现一次。

    80020

    第34期:MySQL 冗余设计

    引言: 上一篇我介绍了 MySQL 范式标准化设计,范式设计具有以下优点: 1、把如何消除数据冗余做到极致,从而减少关系对磁盘额外占用。 2、各个之间关系表现非常清晰,可读性非常强。...数量越多,查询时可能需要关联就越多。我们知道,检索多表关联开销比检索单开销要大多。...综上,我们需要结合范式设计优点,并且想办法去解决范式设计缺点, 由此带来思路就是允许数据有一定程度冗余,用空间换时间。比如现在微服务设计、NOSQL 数据库等根本不会考虑范式标准理论。...这样思路也就是今天要讲重点,简称反范式。 反范式也即通过一定冗余把原先高级别的范式设计降低为低级别的范式设计来减少范式设计带来数量增多缺点。...联合查询开销非常大,为了消除不必要联合查询,此时就不能完全按照范式理念来设计,需要一定反范式思想,针对每个需求,添加必要冗余列方可达到简化查询。

    88830

    新零售mysql设计设计省份+城市

    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 sql(省份) sql(城市) 省市之间联系是: province_id int unsigned...; 省市之间联系是: province_id int unsigned not null COMMENT “省份id” 城市是属于哪一个省份呢 id int unsigned PRIMARY key...主键是能确定一条记录唯一标识,主键字段必须唯一,必须非空,一个中只能有一个主键,主键可以包含一个或多个字段。 打个比方,一条记录包括身份正号,姓名,年龄,学校,国籍,性别等。...身份证号是唯一能确定你这个人,其他都可能有重复,所以,身份证号是主键。 设置主键作用是唯一性。非空。说明了自增id不会重复。 comment是什么? 代表一种注释。...别人看懂这是什么字段或者或者数据库 UNIQUE unq_province(province)是什么意思》 因为搜索时候是先搜索某省才能搜索某市哦

    807110

    新零售mysql设计 订单 订单详情

    作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 sql 订单 数据 订单详情 数据: 订单号与流水号有什么不同?...order_id int unsigned not null COMMENT "订单id", sku_id int unsigned not null COMMENT "商品id", 订单与商品关系...订单号是跟业务相关,流水号是跟交易相关,订单里面一定保存了金额,支付时候用到流水号,所以两个使用场景不一样,数据库id没有任何意义,只是一个记录唯一标识而已 订单(解析) create table...主键是能确定一条记录唯一标识,主键字段必须唯一,必须非空,一个中只能有一个主键,主键可以包含一个或多个字段。 打个比方,一条记录包括身份正号,姓名,年龄,学校,国籍,性别等。...别人看懂这是什么字段或者或者数据库 为什么要用int unsigned类型呢? 因为id是不是整数

    2.3K110
    领券