龙空技术网

游戏开发mysql建表规范

小猪漫跑 401

前言:

今天看官们对“mysql小数类型建表怎么用”大概比较关切,咱们都想要知道一些“mysql小数类型建表怎么用”的相关知识。那么小编在网摘上网罗了一些对于“mysql小数类型建表怎么用””的相关资讯,希望朋友们能喜欢,咱们一起来了解一下吧!

基础规范必须使用InnoDB存储引擎:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高必须使用UTF8字符集:万国码,无需转码,无乱码风险,节省空间, 如果要使用表情,那么使用 utfmb4来进行存储,注意它与 utf-8编码的区别。数据表、数据字段必须加入中文注释禁止主库使用存储过程、视图、触发器、Event

说明: 高并发大数据的游戏业务,架构设计思路是“解放数据库CPU,将计算转移到服务层”,并发量大的情况下,这些功能很可能将数据库拖死,业务逻辑放到服务层具备更好的扩展性,能够轻易实现“增机器就加性能”。数据库擅长存储

建表规范

1. 单表列数目必须小于50

2. 表必须有主键,例如自增主键

 a)主键递增,数据行写入可以提高插入性能,可以避免page分裂,减少表碎片提升空间和内存的使用 b)主键要选择较短的数据类型, Innodb引擎普通索引都会保存主键的值,较短的数据类型可以有效的减少索引的磁盘空间,提高索引的缓存效率 c) 无主键的表删除,在row模式的主从架构,会导致备库夯住

3. 表名必须使用小写字母或者数字,表命名规范:用户表 t_u_xxxx,游戏配置数据表 t_cfg_xxxx,日志数据表 t_log_xxxx,公共数据表t_pub_xxxx。

4. 表达是与否概念的字段,必须使用 IsXxx的方式命名,数据类型是 unsignedtinyint( 1表示是,0表示否),此规则同样适用于 odps建表。说明:任何字段如果为非负数,必须是 unsigned。

5. 禁止出现数字开头,单词首字母大小。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。

正例:GetterAdmin,TaskConfig,Level3Name反例:getter_admin,taskConfig,level_3_name

6. 表名不使用复数名词。说明:表名应该仅仅表示表里面的实体内容,不应该表示实体数量,对应于 DO类名也是单数形式,符合表达习惯。

7. 禁用保留字,如 desc、range、match、delayed等,请参考 MySQL官方保留字。

8. 唯一索引名为 uk_字段名;普通索引名则为 idx_字段名。说明:uk_ 即 unique key;idx_ 即 index的简称。

9. 小数类型为 decimal,禁止使用 float和 double。说明:float和 double在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不正确的结果。如果存储的数据范围超过 decimal的范围,建议将数据拆成整数和小数分开存储。

10. 如果存储的字符串长度几乎相等,使用 char定长字符串类型。

11. varchar是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索引效率。

12. 表必备三字段:id, CreateDate, UpdateDate。说明:其中 id必为主键,类型为 unsigned bigint、单表时自增、步长为 1。CreateDate,UpdateDate的类型均为 date_time类型。

13. 表的命名最好是加上“业务名称_表的作用”。正例:tiger_task / tiger_reader / mpp_config

14. 库名与应用名称尽量一致。

15. 如果修改字段含义或对字段表示的状态追加时,需要及时更新字段注释。

16. 【字段允许适当冗余,以提高性能,但是必须考虑数据同步的情况。冗余字段应遵循:

1)不是频繁修改的字段。2)不是 varchar超长字段,更不能是 text字段。正例:商品类目名称使用频率高,字段长度短,名称基本一成不变,可在相关联的表中冗余存储类目名称,避免关联查询。

17. 【单表行数超过 500万行或者单表容量超过 2GB,才推荐进行分库分表。说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

18. 合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。

正例:人的年龄用 unsigned tinyint(表示范围 0-255,人的寿命不会超过 255岁);海龟就必须是 smallint,但如果是太阳的年龄,就必须是 int;如果是所有恒星的年龄都加起来,那么就必须使用 bigint。

标签: #mysql小数类型建表怎么用