没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
、 表设计
1.库名、表名、字段名必须使写字,“_”分割。
2.库名、表名、字段名必须超过12个字符。
3.库名、表名、字段名名知意,建议使名词是动词。
4.建议使InnoDB存储引擎。
5.存储精确浮点数必须使DECIMAL替代FLOAT和DOUBLE。
6.建议使UNSIGNED存储负数值。
7.建议使INT UNSIGNED存储IPV4。
8.整形定义中添加度,如使INT,是INT(4)。
9.使短数据类型,如取值范围为0-80时,使TINYINT UNSIGNED。
10.建议使ENUM类型,使TINYINT来代替。
11.尽可能使TEXT、BLOB类型。
12.VARCHAR(N),N表示的是字符数是字节数,如VARCHAR(255),可以最可存储255个
汉字,需要根据实际的宽度来选择N。
13.VARCHAR(N),N尽可能,因为MySQL个表中所有的VARCHAR字段最度是65535个
字节,进排序和创建临时表类的内存操作时,会使N的度申请内存。
14.表字符集选择UTF8。
15.使VARBINARY存储变字符。
16.存储使YEAR类型。
17.存储期使DATE类型。
18.存储时间(精确到秒)建议使TIMESTAMP类型,因为TIMESTAMP使4字节,DATETIME
使8个字节。
19.建议字段定义为NOT NULL。
20.将过字段拆分到其他表中。
21.禁在数据库中使VARBINARY、BLOB存储图、件等。
22.表结构变需要通知DBA审核。
、 索引
1.唯索引必须按照“idx_字段名称_字段名称[_字段名]”进命名。
2.唯索引必须按照“uniq_字段名称_字段名称[_字段名]”进命名。
3.索引名称必须使写。
4.索引中的字段数建议超过5个。
5.单张表的索引数控制在5个以内。
6.唯键由3个以下字段组成,并且字段都是整形时,使唯键作为主键。
MySQL数据库设计规范
7.没有唯键或者唯键符合5中的条件时,使增(或者通过发号获取)id作为主键。
8.唯键和主键重复。
9.索引字段的顺序需要考虑字段值去重之后的个数,个数多的放在前。
10.ORDER BY,GROUP BY,DISTINCT的字段需要添加在索引的后。
11.使EXPLAIN判断SQL语是否合使索引,尽避免extra出现:Using File Sort,
Using Temporary。
12.UPDATE、DELETE语需要根据WHERE条件添加索引。
13.建议使%前缀模糊查询,如LIKE “%weibo”。
14.对度过的VARCHAR字段建索引时,添加crc32或者MD5 Hash字段,对Hash字段建
索引。
15.合创建联合索引(避免冗余),(a,b,c) 相当于 (a) 、(a,b) 、(a,b,c)。
16.合覆盖索引。
17.SQL变需要确认索引是否需要变并通知DBA。
三、 SQL语
1.使prepared statement,可以提供性能并且避免SQL注。
2.SQL语中IN包含的值应过多。
3.UPDATE、DELETE语使LIMIT。
4.WHERE条件中必须使合适的类型,避免MySQL进隐式类型转化。
5.SELECT语只获取需要的字段。
6.SELECT、INSERT语必须显式的指明字段名称,使SELECT
,使
INSERT INTO
table()
。
7.
使
SELECT column_name1, column_name2 FROM table WHERE [condition]
是
SELECT
column_name1 FROM table WHERE [condition]
和
SELECT column_name2 FROM table
WHERE [condition]
。
8.WHERE
条件中的等值条件(
IN
、
BETWEEN
、
<
、
<=
、
>
、
>=
)会导致后的条件使
索引。
9.
避免在
SQL
语进数学运算或者函数运算,容将业务逻辑和
DB
耦合在起。
10.INSERT
语使
batch
提交(
INSERT INTO table VALUES(),(),()……
),
values
的个数应过
多。
11.
避免使存储过程、触发、函数等,容将业务逻辑和
DB
耦合在起,并且
MySQL
的存储
过程、触发、函数中存在定的
bug
。
12.
避免使
JOIN
。
13.
使合的
SQL
语减少与数据库的交互次数。
14.
使
ORDER BY RAND()
,使其他法替换。
15.
建议使合的分式以提分的效率。
16.
统计表中记录数时使
COUNT(),是COUNT(primary_key)和COUNT(1)。
17.禁在从库上执后台管和统计类型功能的QUERY。
四、 散表
1.每张表数据建议控制在5000w以下。
2.可以结合使hash、range、lookup table进散表。
3.散表如果使md5(或者类似的hash算法)进散表,表名后缀使16进制,如user_ff。
4.推荐使CRC32求余(或者类似的算术算法)进散表,表名后缀使数字,数字必须从0开
始并等宽,如散100张表,后缀从00-99。
5.使时间散表,表名后缀必须使特定格式,如按散表user_20110209、按散表
user_201102。
五、 其他
1.批导、导出数据需要DBA进审查,并在执过程中观察服务。
2.批新数据,如update,delete 操作,需要DBA进审查,并在执过程中观察服务。
3.产品出现数据库平台运维导致的问题和故障时,如前端被抓站,请及时通知DBA,于维护
服务稳定。
4.业务部程序出现bug等影响数据库服务的问题,请及时通知DBA,于维护服务稳定。
5.业务部推活动,请提前通知DBA进服务和访问评估。
6.如果出现业务部为误操作导致数据丢失,需要恢复数据,请在第时间通知DBA,并提供
准确时间,误操作语等重要线索。
FAQ
1-1.库名、表名、字段名必须使写字,“_”分割。
a) MySQL有配置参数lower_case_table_names,可动态改,linux系统默认为0,即库表名以
实际情况存储,写感。如果是1,以写存储,写感。如果是2,以实际情况存
储,但以写较。
b) 如果写混合,可能存在abc,Abc,ABC等多个表共存,容导致混乱。
c) 字段名显示区分写,但实际使区分,即可以建两个名字样但写样的字
段。
d) 为统规范, 库名、表名、字段名使写字。
back
1-2.库名、表名、字段名必须超过12个字符。
库名、表名、字段名持最多64个字符,但为统规范、于辨识以及减少传输,必须超
过12字符。
back
剩余10页未读,继续阅读
代码深渊漫步者
- 粉丝: 14
- 资源: 320
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0