暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Scheme设计与数据类型优化
539
1页
0次
2020-06-22
5墨值下载
选择数据类型只要遵循而简原则就好,越小的数据类型通常会更快,占用更少的磁
、内时需
CPU
期也简单计算少的
CPU
周期,比如,整型就比字符操作代价低,因而会使用整型来存储
ip
地址,使用
DATETIME
来存储时间,而不是使用字符串。
这里总结几个可能容易理解错误的技巧:
1.
通常说把
NULL
的列
NOT NULL
不会性能升有少帮,只
果计划在列上创建索引,就应该将该列设置为
NOT NULL
2.
INT(11)
INT
使
32
4
节)存储空间,那么它的表示范围已经确定,所
INT(1)
INT(20)
对于存储和计算是相
同的。
3. UNSIGNED
表示不允许负值,大致可以使正数的上限提高一倍。比
TINYINT
储范围是
-128 ~ 127
,而
UNSIGNED TINYINT
存储的范围却是
0 - 255
4.
通常来讲,没有太大的必要使用
DECIMAL
数据类型。即使是在需要存储财务数据
,仍使
BIGINT
比如到万可以以一
使用
BIGINT
存储。这样可以避免浮点数计算不准确和
DECIMAL
精确计算代价高的问题。
5. TIMESTAMP
使
4
空间
DATETIME
使
8
空间。因
TIMESTAMP
1970 - 2038
DATETIME
TIMESTAMP
的值因时区不同而不同。
6.
大多数情况下没有使用枚举类型的必要,其中一个缺点是枚举的字符串列表是固定
,添字符)必使
ALTER TABLE
(如在列
加元素,不需要重建表)。
7. schema
的列不要太多。原因是存储引擎的
API
工作时需要在服务器层和存储引擎
层之间通过行缓冲格式拷贝数据,然后在服务器层将缓冲内容解码成各个列,这个转换
程的代价是非常高的。如果列太多而实际使用的列又很少的话,有可能会导致
CPU
占用过
高。
8.
ALTER TABLE
非常
MySQL
行大表结是用
的结构创建一个张空表,从旧表中查出所有的数据插入新表,然后再删除旧表。尤其当
存不足而表又很大,而且还有很大索引的情况下,耗时更久。当然有一些奇技淫巧可以
决这个问题,有兴趣可自行查阅。
of 1
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜