15年专业服务器托管租用服务商!
咨询热线 : 400-880-5868

首页 > 客服中心 > 帮助中心

帮助中心

APP服务器托管MySQL建表的一些建议

发布时间:2018-10-10 9:43:44    返回首页

  APP服务器托管用户在配置服务器的时候建立MySQL是必不可少的一环,而建表的好坏将影响到之后的数据库的维护。所以运维应该从以下角度考虑:

  1,Tablecolumn(列);

  根据存储数据的大小,设置合理的column的数据类型,如一个代表状态的字段,status范围为0到1,则设置mediumint明显比int更合理,因为int占用的空间比mediumint多25%;尽量将column设置为NOTNULL,设置为NOTNULL将节省硬盘空间,执行查询语句的时候更好的使用索引。设置为默认NULL将多占用1bit的空间设置主键的时候,最好使用数字而不是字符串,大的数字占用的空间比相同含义的字符串小。

  2,RowFormat(行格式化);

  Innodb默认的rowformat为DYNAMIC,可以通过innodb_default_row_format设置默认值,也可以在CREATETABLE或者ALTERTABLE的时候指定row_format。

  row_format选项包含COMPACT,DYNAMIC,COMPRESSED,通过增加对CPU的使用来达到降低对硬盘空间的使用如果当前的环境性能因为缓存命中率和硬盘读写速度受到制约,则设置rowformat将会提高读写性能。很少因为CPU的性能使mysql的读写受到限制,这种情况下,使用rowformat将使mysql更慢。

  mysql对设置为可变长度字符集,例如utf8mb3,utf8mb4的char(N)列进行了优化。当row_format=REDUNDANT时(固定长度存储),char占用Nx字符集最大字节数的空间(例如设置为utf8mb3,长度设置为200,则该字段占用长度为:200*3)。许多编程语言使用utf8字符集时,主要使用单字节,所以固定的存储长度经常会浪费空间。row_format设置为COMPACT,DYNAMIC,COMPRESSED时,Innodb会根据这些列实际的存储长度(在N---Nx字符集最大字节数变动)存储,去掉后面一些不必要的0位空间。

  想要进一步节省硬盘空间,建Innodb表的时候,使用ROW_FORMAT=COMPRESSED;3,Indexes(索引);

  建主键的时候,应该越小越好,越小的主键将会获得更好的查询性能。对于INNODB表来说,主键存在于表中的每个二级索引中(在创建索引的时候,mysql会默认将主键作为二级索引的一部份),所以越小的主键将会使每个索引占用的空间大大减少。

  索引会提升查询性能,但是会降低插入、更新和删除的性能。如果执行查询语句的时候更多是和其他列联合查询,建联合索引比给每个column建索引要更好。

  在长字符串column中,最好取字段值的最左端前缀作为索引,而不是整个字段。

  4,Join(交叉查询);

  为了使join查询的时候性能更好,相关联的字段应设置相同的字段名,设置相同的字段数据类型;列名的长度应尽量短,如一个表为student,建列的时候name比sdudent_name更好。列名的长度,应小于18个字符长度;将大表拆分成2个或多个表;

  5,Normalization(标准化);

  通常情况下,尽量存储不重复的数据。将一些名称列设置一个唯一ID存储在小的表中,其他表要使用的时候,只存储ID的值,在查询语句里面通过关联ID查询出名称。

  当然如果性能比空间更重要,则可以适当放宽标准化限制,可将一些列信息冗余或者创建汇总表来加快查询速度。

  

在线咨询
QQ 咨询
服务热线
扫一扫

扫一扫
关注我们

全国免费服务热线
400-880-5868

返回顶部