2023年3月29日23:31:10

main
lixicai 3 years ago
commit 16a0fca1f1

@ -0,0 +1,112 @@
## 1.范式化设计
###六种范式:
【第一范式】:字段不可再分
【第二范式】:要求实体的属性完全依赖于主关键字(主键唯一性)
【第三范式】:要求数据不能存在传递关系,即每个属性都和主键有直接关系,而不是间接关系
【巴斯-科德范式】:
【】
###范式一定好吗?
范式的好处就是在进行表设计的时候非常的规范。但是会对查询性能有影响,于是就提出了反范式化设计。
### 反范式化设计
为了性能和读取效率而适当的违反对数据库设计范式的要求。
为了查询性能允许存在部分冗余数据。
![1680098978943](.\img\1680098978943.png)
## 项目中常见的反范式实现
1.缓存与汇总数据
2.计数器表设计
MySQL处理计数器高并发场景用槽的设计为一个实例做多行记录
## 字段数据类型优化-整数与实数
基本原则:
- 更小的通常更好
- 简单就好
- 尽力避免null
因为更小的字段,一般会有更少的处理时间
null对于索引、索引统计会更复杂。可为null 占用更多空间null列为索引还会额外占用一个字节
具体类型:
- 整数类型:
tinyint[8bit=1byte] 、smalint[16bit=2byte]、mediumint[24bit=3byte]、int[32bit=4byte]、bigint[64bit=8byte]
- 实数类型:
float、double、decimal[能存最多65个数字实现是通过字符串存储的]
- 字符串类型:
char【定长更省空间没有记录长度】、varchar【不定长1-2个额外字节来记录字符串的长度】、blob【用二级制存不存在字符集排序】、text【字符存有字符集排序】、enum、set
- 日期和时间类型
datetime1001-9999年 跟时区无关、timestamp(1970-2038年跟时区有关系)
int的【长度】只影响命令行的显示Int(1)与Int(11)是在数据存储上都是一样的。
字符串列最大长度比平均长度大很多的情况用varchar,否则用char
从存储的角度:
hello'->char(5) varchar(200) 存储开销是一样的。
blob和text这种大字段一般单独到一张表里面通过这张表的主键来关联
datetime和timestamp都只能存储到秒。
### 数据量特别大,实数来存储,确保精读,确保效率,怎么办?
业务上来设计bigint,数据放大100倍确保两位精读。
## 命名规范
- 可读性原则
- 必须使用小写字母加下划线
- 不使用复数名词
- 禁用保留字
- 索引命名
1.表的命名不建议使用缩写
一般格式业务名称_表的作用如biz_order
2.索引命名
一般格式主键索引pk\_字段名 唯一索引uk\_字段名 idx\_字段名
## 索引是什么?
### 哈希索引的弊端
范围查找? 只能一个一个精确查找
索引排序? 文件排序或者其他排序方式
组合索引? 不能实现前缀匹配
hash冲突
### B+Tree索引

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

@ -0,0 +1,50 @@
## 提问的智慧
### 1.概念引入
### 2.使用专业术语
尽量使用行业专业词汇,不要自己造词汇,难以理解,单也不要过度使用专业词汇,会造成简单的问题描述变成一个学术论文,核心思想:表述语言专业,同时兼顾通俗易懂。
!!有这个意识即可,慢慢养成用专业术语的习惯
### 3.准确具体的描述问题
应当具体问题具体分析,语言清晰准确并且注意断句。
### 4.提供分析材料
问自己一个问题:如果是你自己在给别人解决问题,针对这个问题,我应该看到什么?
换位思考。
1.分析资料要完整
2.按照事件的逻辑顺序
3.代码截图带上代码行数
4.最好可以在截图上做一些特殊标记
5.如果直接发送代码,请注意简单排版
6.必要时介绍运行环境jdk版本 编辑工具 使用插件 服务器环境... ..
7.其他条件
## 5.学习查看日志
注意第一个异常信息和最后一个异常信息注意Cause by后面的东西。
博客和工具网站CSDN菜鸟网
出现问题最好根据关键字查阅至少3篇文章阅读增加自己的谈资和知识面。
## 6.线上教育平台的介绍
Loading…
Cancel
Save