mysql优化-数据库设计基本原则】的更多相关文章

mysql优化-数据库设计基本原则 一.数据库设计三范式 第一范式:字段具有原子性 原子性是指数据库的所有字段都不可被再次划分,如下表就不满足原子性,起点与终点 字段就可被拆分为起点与终点两个字段. id 起点-终点 1 北京-上海 2 北京-广州 第二范式:消除对主键的部分依赖 依赖是指在数据库表中,通过字段A就可以确定字段B,这就叫B对A依赖. 而部分依赖就是指当数据库表中主键为复合主键(A,C),而B仅仅对A依赖,这种情况称作部分依赖. 正确的方法是创建一个与业务逻辑无关的 id 主键,其…
(1.13)mysql优化数据库对象 1.mysql优化数据库对象 [1.1]数据库对象类型优化 select * from test1 procedure analyse(); ,); --不要为那些多余16个或者256个字节的ENUM类型提出建议.如果没有这样的限制,输出信息可能会很长:enum定义通常很难阅读 [1.2]通过水平/垂直拆分提高表的访问效率 [1.3]逆规范化(一般指的是根据业务需求来设定范式) (1)增加冗余列:指在多个表表中具有相同的列,它常用来在查询时避免连接操作 (2…
我有一张表w1000,里面有1000万条数据,这张表结构如下:CREATE TABLE `w1000` ( `id` varchar(36) NOT NULL, `name` varchar(10) DEFAULT NULL, `age` int(3) DEFAULT NULL, `money` double(8,2) DEFAULT NULL, `address` varchar(100) DEFAULT NULL, `create_date` datetime(3) DEFAULT NULL…
1.数据库设计 关系型数据库建议在E-R模型的基础上,我们需要根据产品经理的设计策划,抽取出来模型与关系,制定出表结构,这是项目开始的第一步 在开发中有很多设计数据库的软件,常用的如power designer,db desinger等,这些软件可以直观的看到实体及实体间的关系 设计数据库,可能是由专门的数据库设计人员完成,也可能是由开发组成员完成,一般是项目经理带领组员来完成 1.1 实体 就是我们根据开发需求,要保存到数据库中作为一张表存在的事物.实体的名称最终会变成表名 实体会有属性,实体…
摘抄并用于自查笔记 1. 对精度有要求decimal float 类型用于表示单精度浮点数值,而double类型用于表示双精度浮点数值,float 和 double 都是浮点型,而 decimal 是定点型. MySQL浮点型和定点型可以用类型名称后加 (M,D) 来表示,M表示该值的总共长度,D表示小数后面的长度,M和D又称为精度和标度,如 float(7,4) 可显示为 -999.9999,MySQL保存值时进行四舍五入,如果插入 999.00009,则结果为 999.0001.float…
19.优化数据库对象19.1 优化表的数据类型应用设计时需要考虑字段的类型和长度,并留有一定长度冗余.procedure analyse()函数可以对表中列的数据类型提出优化建议.procedure analyse()函数用法:select * from 表名 procedure analyse(); -- 对所有列提出优化建议select * from 表名 procedure analyse(16,256); -- 不对包含16至256取值的枚举列提出建议分析的结果是针对每个列,输出该列的最…
一.三大范式 1.第一范式:消除一个字段包含多个数据库值,消除一个记录包含重复的组(单独的一列包含多个项目),即可满足1NF. 2.第二范式:消除部分依赖性即可转化为2NF.部分依赖性表示一个记录中包括的字段只依赖于主键的一部分.解决部分依赖性的最简单方法是将复合主键分成两部分,每一部分表示一个单独的表. 3.第三范式:消除可传递依赖性即可满足3NF.可传递依赖性表示记录中至少一个值不依赖主键,而是依赖于这个记录中的另一个字段. 4.数据库规范化: 1NF:删除重复的组,并确定一个主键或复合主键…
当数据量大,数据库相应慢时都会针对数据库进行优化.这时都是要针对具体情况,具体业务需求进行优化的. 但是有些步骤和规则应该适合各种情况的.这里综合网上找的资料简单分析一下. 第一优化你的sql和索引: 第二加缓存,memcached,redis: 第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护: 第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对…
# 显示界面信息# 循环界面信息# 根据用户输入数据来做相应的选择from pymysql import connect def jingdong_info(): '''#显示界面信息''' print('*' * 20) print('1 查询所有商品信息') print('2 查询所有商品在种类信息') print('3 查询所有商品在品牌信息') print('4 添加商品种类') print('5 根据id查询商品信息') print('6 根据id查询商品信息安全方式') print(…
一.考虑是用 procedure analyse() 函数对当前应用的表进行分析.字段类型是否可优化. 二.通过拆分提高表的访问效率. (A) 针对MyISAM表,有两种拆分方法: 垂直拆分:主码和某些列在一个表,主码和另一些列在另一个表.这在一个表中某些列常用,而某些列不常用的时候采用.此种方法:数据页变小,减少I/O次数,缺点是:需管理冗余,查询需要联合操作. 水平拆分:根据一列或多列的数据的值把数据行放到两个独立的表中.使用场景: 表很大,分割后降低数据量和索引的页数,降低索引的层数,提高…