mySql 数据库设计原则】的更多相关文章

mysql数据库设计原则: 必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 禁止使用存储过程.视图.触发器.Event 解读:高并发大数据的互联网业务,架构设计思路是“解放数据库CPU,将计算转移到服务层”,并发量大的情况下,这些功能很可能将数据库拖死,业务逻辑放到服务层具备更好的扩展性,能够轻易实现“增机器就加性能”.数据库擅长存储与索引,CPU计算还是上移吧 表必须有主键,例如自增主键 解读:a)主键递增,数据行写入可以提高插入性…
MySQL数据库设计总结   规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎. 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节.另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排列的,主键是默认的聚簇(cluster)索引,因此MyISAM虽然在一般情况下,查询性能比InnoDB高,但InnoDB的以主键为条件的查询性能是非常高的. 规则2:…
2 MySQL 数据库设计的"奥秘" [主题]逻辑设计:数据类型与 Schema 所谓"万丈高楼平地起",一个稳固的建筑离不开扎实的基础.同样,良好的的「逻辑设计」和「物理设计」是数据库高性能的基石. 本文的主要内容总结了一张图,你可以点击查看. 我们需要根据系统需要执行的 SQL 语句设计 schema,这往往权衡各种因素. [idea]瞧!权衡和取舍不仅仅在系统设计.方案设计时处处体现其价值,在数据库表设计也同样如此. 举个例子,反范式设计可以加快某些类型查询,…
关于字段的选择其实很多地方都有进行详细的介绍,我这里只写一下我在使用过程中的心得感受.如果想要全面的了解的话,大家可以去看高性能MYSQL这一本书籍,里面有一章节介绍的特别全面,基本涉及MYSQL中全部的字段的介绍. 我这里给大家介绍的就一些常用的字段,例如:int.float.double. decimal.varchar.char. date.datetime等八种常用的类型. 在数据库设计过程中我们要本着够用的原则,如果一味的把数据字段范围设为最大或者默认值的话,会导致存储空间大量的浪费.…
本规范适用于mysql 5.1或以上版本使用 数据库范式 第一范式(1NF)确保每列保持原子性 第一范式(1NF):数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项. 例如: 体重是每个学生的属性,在数据库设计的时候,不会将“体重”拆分成两个字段保存,所以建立一个“学生表”(学生ID.姓名.身高.体重): 第二范式(2NF)确保表中的每列都和主键相关 满足第二范式(2NF)必须先满足第一范式(1NF),第二范式(2NF)要求实体的属性完全依赖于主关键字.如果存在不…
一.一个例子 数据库需要处理的行数: 189444*1877*13482~~~479亿 如果在关联字段上加上合适的索引: 数据库需要处理的行数:368006*1*3*1~~~110万 MySQL通常是一个请求对应一个线程,其thread_handling是one-thread-per-connection,因此一条sql请求只能利用一个CPU 通过加索引,数据库需要处理的行数下降了4个数量级,第一种情况下等待半小时不一定能跑出结果,但第二种情况可以在秒级范围内拿到需要的结果.从该例子可以看出,M…
2.MySQL之选择字段数据类型 1.http://blog.itpub.net/29660208/viewspace-1208352/ 3.http://www.cnblogs.com/HondaHsu/p/3640180.html 数据库设计纪要上面是下面的解决办法1.表中特有的字段,与公共的字段,共享字段问题2.对某些值数据类型的选择问题3.数据库字符集问题 本篇文章对于设计表时,数据列的选择进行了一些探寻.好的表设计不仅仅是能满足业务需求,还能够满足对性能的优化.英语与网址都是公共的表…
最近手头上有3个项目开动,其他2个都是从底层开始的,一个已经开始了一段时间的了,在小城市小团队开发的条件下,都没有专门的DBA来做数据库的设计和维护,往往都是开发人员顶上,可是看了很多的数据库的设计,感觉很多设计都不是很完美,包括DZ的Ucenter和UcenterHome的数据库,所以这段时间话了近5个小时的时间好好的整理了下数据库方面的基本内容,配合现有的框架来实现快捷的数据库设计,来满足目前项目的需求 参考的数据库文档主要有:目前国内的常见的PHP系统的数据库 DZ6.0的数据库 ECSH…
mysql数据库性能不比oracle数据库,所以设计上,和oracle有一些不同.下面总结一些互联网产品的数据库设计. 1.主键 主键可以使用bigint(20) unsigned也可以使用varchar,使用bigint,可以设置为自增主键auto_increment.使用varchar,要生成主键. 2.gmt_create.gmt_modified 在TB所有表中都添加gmt_create.gmt_modified字段,都是datetime类型.gmt_create表示记录创建时间,gmt…
为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际开发中最为常见的设计范式有三个: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 第一范式的合理遵循需要根据系统的实际需求来定.比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个…
一.什么是范式 1.1.范式:Normal Format,是离散数学的知识,是为了解决数据的存储与优化而提出来的.要求存储数据后,凡是能够通过关系寻找出来的数据,坚决不再重复存储,终极目标是为了减少数据的冗余. 1.2.范式是一种分层的规范,分为6层,每一层都比上一层更加严格,若要满足下一层范式,前提是满足上一层范式.6层范式:1NF,2NF...6NF:1NF是最底层,要求最低,6NF最高层,要求最严格. 1.3.mysql属于关系型数据库,有空间浪费,表设计时也要致力于节省存储空间.这与范式…
1.过分的反范式化为表建立太多的列 我们在设计数据库的结构时,比较容易犯的第一个错误就是对表进行了过分的反范式化的设计,这就容易造成了表中的列过多,虽然说Mysql允许为一个表建立很多的列,但是由于Mysql的插件式架构的原因,前面博客已经有介绍,Mysql的服务器层和存储引擎层是分离的,Mysql的存储引擎API工作时需要把服务器层和存储引擎层之间通过缓冲格式来拷贝数据,然后在服务器层将缓冲层的数据解析成各个列,这个操作过程成本是非常高的,特别是对于MyISAM的变长结构,和Innodb这种行…
目录 1. 规范背景与目的 2. 设计规范 2.1. 数据库设计 2.1.1. 库名 2.1.2. 表结构 2.1.3. 列数据类型优化 2.1.4. 索引设计 2.1.5. 分库分表.分区表 2.1.6. 字符集 2.1.7. 一个规范的建表语句示例 2.2. SQL编写 2.2.1. DML语句 2.2.2. 多表连接 2.2.3. 事务 2.2.4. 排序和分组 2.2.5. 线上禁止使用的SQL语句 1. 规范背景与目的 本规范旨在帮助或指导RD.QA.OP等技术人员做出适合线上业务的数…
[实例演示 —— 实体之间的关系] [逻辑设计的工作] ① 将需求转化为数据库的逻辑模型 ② 通过 ER 图的形式对逻辑模型进行展示 ③ 同所选用的具体的 DBMS 系统无关 [名词解释] 候选码可以简单理解为数据库的主键或唯一索引 主码即主键 [ER图例说明] [ER图实例——小型电商网站] [设计范式概要] 常见的数据库设计范式包括:第一范式,第二范式,第三范式 及 BC 范式.第四范式和第五范式等. [数据库操作异常及数据冗余] 数据冗余:相同的数据在多个地方存在,或者说表中的某个列可以由…
数据库设计的步骤 ① 需求分析 ② 逻辑设计 使用 ER 图对数据库进行逻辑建模 ③ 物理设计 ④ 维护优化 a. 新的需求进行建表 b. 索引优化 c. 大表拆分 [需求分析] ① 了解系统中所要存储的数据(对象 / 实体) a. 实体与实体之间的关系(1 对 1,1 对 多,多 对 多) b. 实体所包含的属性有哪些 c. 哪些属性或属性的组合可以唯一标识一个实体 ② 了解数据的存储特点 ③ 了解数据的生命周期 [例] 一个小型电商网站,核心模块包括:用户.商品.订单.购物车.供应商. ①…
1.一对很少  one-to-few  可以采用内嵌文档 person集合中 { name:'张三', age:20, address:[ {country:"中国",province:"山西省",city:"长治市"}, {country:"中国",province:"山西省",city:"太原市"} ] } 优点:不需要单独执行一条语句去获取内嵌的内容 缺点:法把这些内嵌文档当做单独…
数据库设计 需求分析 *1.用户模块 用于记录记录注册用户信息 包括属性:用户名,密码,电话,邮箱,身份证号,地址,姓名,昵称... 可选唯一标志属性:用户名,电话,身份证号 存储特点:随系统上线时间逐渐增加,需要永久存储 *2.商品模块 用于记录记录注册用户信息 包括属性:商品编码,商品名称,商品品类,重量,价格... 可选唯一标志属性:商品编码,商品名称 存储特点:对下线商品可归档 *3.订单模块 用于记录记录注册用户信息 包括属性:订单号,用户姓名,用户电话,收货地址,商品编号,数量,价格…
[物理设计的工作] ① 选择合适的数据库管理系统:Oracle,SQLServe,MySQL,PgSQL ② 定义数据库.表及字段的命名规范 ③ 根据所选的 DBMS 系统选择合适的字段类型 ④ 反范式化设计 —— 考虑读效率,在一些表中增加适当的冗余(空间换时间) [数据库选择] [MySQL 常用的存储引擎] 注:Archive 主要用于存储日志:Ndb cluster 是 MySQL 集群(内存型集群)所使用的存储引擎. [表及字段的命名规则] [建立数据库及表结构 —— 字段类型的选择原…
遥执乾坤(44758121)  18:21:23 mysql据说只能使用一个索引,我这里几乎所有字段都有索引. 但每个字段就算用索引,也需要扫描至少100w以上记录. 横瓜(601069289)  18:23:12 mysql支持16个索引 用1-3属于优质结构 横瓜(601069289)  18:24:56 再多了,就是数据库结构设计不合理 Glory(1302516908)  18:25:10 mysql的in操作是怎么个比较法? 横瓜(601069289)  18:26:46 是执行多次W…
规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎. 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节.另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排列的,主键是默认的聚簇(cluster)索引,因此MyISAM虽然在一般情况下,查询性能比InnoDB高,但InnoDB的以主键为条件的查询性能是非常高的. 规则2:命名规则. 数据库和表名应尽可…
本文由云+社区发表 作者:漆洪凯 规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎. 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节.另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排列的,主键是默认的聚簇(cluster)索引,因此MyISAM虽然在一般情况下,查询性能比InnoDB高,但InnoDB的以主键为条件的查询性能是非常高的. 规则…
一.存储引擎 推荐使用Innodb,这也是mysql默认使用的存储引擎,支持事务 二.属性的选择 字符选择: 1.char,存定长,速度快,存在空间浪费的可能,会处理尾部空格,上限255字节.(utf-8, 一个汉字3字节 英文字母1字节) 2.varchar,存变长,速度慢,不存在空间浪费,不处理尾部空格,上限65535字节,但是有存储长度实际65532字节最大可用. 3.text,存变长大数据,速度慢,不存在空间浪费,不处理尾部空格,上限65535字节,会用额外空间存放数据长度,故可以全部使…
1.核心原则 不在数据库做运算; cpu计算务必移至业务层; 控制列数量(字段少而精,字段数建议在20以内); 平衡范式与冗余(效率优先:往往牺牲范式) 拒绝3B(拒绝大sql语句:big sql.拒绝大事物:big transaction.拒绝大批量:big batch); 2.字段类原则 用好数值类型(用合适的字段类型节约空间); 字符转化为数字(能转化的最好转化,同样节约空间.提高查询性能); 避免使用NULL字段(NULL字段很难查询优化.NULL字段的索引需要额外空间.NULL字段的复…
0.三大范式及反范式 ◆ 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列.  ◆ 第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键:二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分.  ◆ 第三范式(3NF):首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖.即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况.  第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在…
[维护和优化的工作] ① 维护数据字典 ② 维护索引 ③ 维护表结构 ④ 在适当的时候对表进行水平拆分或垂直拆分 [维护数据字典] a 使用第三方工具对数据字典进行维护 b 利用数据库本身的备注字段来维护数据字典,以 MySQL 为例: c 导出数据字典 [维护索引] 如何选择合适的列建立索引? [维护索引的注意事项] [维护表结构] 注意事项: [数据库中适合的操作] 1. 适合批量操作 2. select * 会造成 I/O 的浪费 3. 使用了函数,该列上的索引就会不起作用 4. 最好使用…
在使用Navicate for mysql进行数据库设计时,如果要分析已有db的表结构,则可以将已经分析过的表放入一个新建的组中,把精力更加集中在剩下的表中,以免受到干扰.…
来源:https://segmentfault.com/a/1190000000473085 假设一高频查询如下SELECT * FROM user WHERE area='amoy' AND sex=0 ORDER BY last_login DESC limit 30;如何建立索引?描述考虑的过程 user表如下:初始化100W条数据,其中,area要通过IP查询生成,sex为 0,1 随机 CREATE TABLE user (id int(10) NOT NULL AUTO_INCREM…
1.数字类型 小数的我就不聊了,因为有小数点的一般都是用字符串保存.关于整数,有几种可以选TINYINT.SMALLINT.MEDIUMINT.INT和BIGINT,分别占1.2.4.8字节.如果无符号,则其最大为255.65535.16777215.4294967295和18446744073709551615.一般年龄呀身高呀用tinyint就足够了,应该合理使用,保证字节不会被浪费. 然后我说一下长度,就是int(多少),其实mysql保存int的时候一般默认为11,这个我们设不设置都没什…
navicat 是我一直在使用的一个数据库操作工具,非常方便快捷.如果没有可用navicat可以留言邮箱我直接发您. 今天来介绍一下使用navicat导出数据库字段设计.废话不多说,先看导出效果. 查询sql SELECT TABLE_NAME 表名, COLUMN_NAME 字段名称, COLUMN_TYPE 字段类型, IF ( IS_NULLABLE = 'YES', '是', '否' ) 是否可为空, IF ( COLUMN_KEY = 'PRI', '是', '否' ) 是否主键, C…
需求分析:分析用户的需求,包括数据.功能和性能需求. 概念结构设计:主要采用E-R模型进行设计,包括画E-R图. 逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换,进行关系规范化. 数据库物理设计:主要是为所设计的数据库选择合适的存储结构和存储路径. 数据库的实施:包括编程.测试和试运行. 数据库运行和维护:系统的运行和数据库的日常维护.…