mysql的schema与数据类型优化分析

Schema与数据类型优化:

1.选择优化的数据类型

更小的通常更好:一般情况下,尽量使用可以正确存储数据的最小数据类型

如:只需存0-200,tinyint unsigned更好。

简单就好:如:整型比字符串操作代价更低,应该使用mysql内建类型而不是字符串来存储日期和时间。

尽量避免NULL:通常情况下最好指定列为NOT NULL,除非真的要存储NULL值。如:查询中包含可为NULL的列对mysql来说更难优化。

2. 选择类型范围

如DATETIME和TIMESTAMP列都可以存储相同类型的数据(时间和日期,精确到秒),但TIMESTAMP只使用

DATETIME一半的存储空间,并且会根据时区变化,具有特殊的自动更新能力。

3.整数类型

有两种类型的数字:整数和实数

如果存储整数,可使用TINYINT(8),SMALLINT(16),MEDIUMINT(24),INT(32),BIGINT(64).

整数类型有可选的UNSIGNED属性,表示不允许负值,可使正数上限提高一倍。如TINYINT UNSIGN可以存储的范围是0~255.

有符号和无符号使用相同的存储空间,并具有相同的性能。

4.实数类型:实数是带有小数部分的数字。

5.字符串类型:VARCHAR和CHAR是最主要的字符串类型。

VARCHAR:用于可变长字符串,比定长更省空间,因为它仅使用必要空间。

适合使用VARCHAR的情况:字符串列的最大长度比平均长度大很多;列的更新很少;

使用了UTF-8字符集

CHAR:是定长的,适合存储短的字符串,或所有值都接近同一个长度。如:存储密码的MD5值,

因为这是一个定长的值。对于经常变更的数据,CHAR也比VARCHAR好,因为定长类型不容易产生碎片。

对于非常短的列,CHAR比VARCHAR在存储空间上也更有效率。如:用CHAR(1)存储只有N和Y的值只需一个字节,

但用VARCHAR(1)却要两个字节,因为还有一个记录长度的额外字节。

使用varhar(5)和和char(5)存储‘hello’的空间开销是一样的,更长的列会消耗更多的内存。

时间: 2024-10-14 02:33:43

mysql的schema与数据类型优化分析的相关文章

MySQL之Schema与数据类型优化(一)

选择优化的数据类型 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要.不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择: 更小的通常更好一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快.因为它们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期也更少.但是要确保没有低估需要存储的值的范围,因为在schema中的增加数据类型的范围是一个非常耗时和痛苦的操作.如果无法确定哪个数据类型是最好的,就选择不会超过范围的最小类型

高性能MySQL(四)—Schema与数据类型优化(1)

Schema与数据类型优化 选择优化的数据类型 下面是一些简单的原则: 更小的通常更好 一般情况下,应该尽量使用可以正确存储的最小数据类型.如:只需要存储0-200, tinyint unsigned就比较好.小的数据类型占的磁盘.内存和CPU缓存都较少,并且处理时需要的CPU周期数也更少. 简单就好 简单数据类型额操作通常需要更少的CPU周期.如:应该使用MySQL的內建类型来存储时间和日期而不是字符串.如:应该用整型存储IP地址. 尽量避免null 通常情况下最好指定列为NOT NULL,除

mysql笔记01 Schema与数据类型优化

Schema与数据类型优化 1. 选择优化的数据类型 1). 更小的通常更好:更小的数据类型通常更快,因为他们占用更少的磁盘.内存和CPU缓存,并且处理需要的CPU周期也更少. 2). 简单就好:简单的数据类型的操作通常需要更少的CPU周期.例如:整型比字符串操作的代价更低,因为字符集和校对规则(排序规则)是字符串比较比整型比较更复杂.这里有两个例子: 一个是应该使用MySQL内建的类型而不是字符串来存储日期和时间,另外一个是应该使用整型存储IP地址. 3). 避免使用null:通常情况下最好指

MySQL Schema与数据类型优化

Schema与数据类型优化 选择优化的数据类型 1.更小的通常更好 更小的数据类型通常更快,因为它们占用更少的磁盘,内存和CPU缓存 2.简单就好 简单数据类型的操作通常需要更少的CPU周期.例如:整型比字符操作代价更低,因为字符集和校对规则使字符比较比整型比较更复杂 3.尽量避免NULL 通常情况下最好制定列为NOT NULL,除非真的需要存储NULL值. 如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引.索引统计和值比较都更复杂.可为NULL的列会使用更

【MySQL】《高性能MySQL》学习笔记,第四章,Schema与数据类型优化

[MySQL]<高性能MySQL>学习笔记,第四章,Schema与数据类型优化 良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema. 反范式的设计可以加快某些类型的查询,单同时可能使另一类型的查询变慢,比如添加计数表和汇总表是一种很好的优化查询的方式,但这些表的维护成本可能会很高. 1.选择优化的数据类型 更小的通常更好. ? 应该尽量使用可以正确存储数据的最小类型,更小的数据类型通常更快,因为他们占用更少的磁盘,内存和CPU缓存,并且处理时需要的CPU周

Schema与数据类型优化

Schema与数据类型优化 1.选择优化的数据类型 应该尽量使用可以存储数据的更小的数据类型.更小的数据类型通常更快,占用更少的磁盘.内存.缓存. 2.简单最好 整型比字符型要好,两个例子,应该使用Mysql内建的类型来存储日期而不是字符串:使用整形存储Ip地址.因为字符的校对.排序规则要复杂. 3.尽量避免使用Null. 因为可为Null的列使得索引和索引统计和值的比较变得复杂. 4.整数类型 整数类型分为:tinyint.smallint.mediumint.int.bigint.Mysql

高性能Mysql——Schema与数据类型优化

良好的逻辑设计和物理设计师高性能的基石 一.选择优化的数据类型 更小的通常更好 占用更小的磁盘.内存.CPU缓存和处理时需要的CPU周期 简单就好 操作需要更少的CPU周期,例如:整型比字符型操作代价更低,以为字符集和校对规则使字符比整型更复杂.应该使用Mysql内建的类型而不是字符串来存储日期和时间,另外一个是应该用整型存储IP地址. 尽量避免NULL 通常情况最好指定列为not null,除非真的需要存储null值.如果查询包含null的列,对Mysql的来说更难优化,null的列是的索引.

第四章:Schema与数据类型优化

1. 选择优化的数据类型 选择数据类型的原则 更小的通常更好:选择可以正确存储数据的最小数据类型 小的数据类型消耗更少的内存.CPU;占用更少的磁盘 选用简单的数据类型:简单的数据类型通常需要更少的CPU周期来处理 使用MySQL内建的类型来存储时间和日期 使用整型存储IP地址 尽量避免null值:通常情況下使用not null,除非真的需要存出null值 null值使得索引.索引統計.值比較都变得复杂 可为null的列需要更多的空间来存储 InnoBD使用单独的bit来存储null值 数字分为

《高性能MySQL》读书笔记--Schema与数据类型优化

1.慢查询 当一个资源变得效率低下的时候,应该了解一下为什么会这样.有如下可能原因:1.资源被过度使用,余量已经不足以正常工作.2.资源没有被正确配置3.资源已经损坏或者失灵因为慢查询,太多查询的实践过长而导致堆积在逻辑上.慢查询到底是原因还是结果?在深入调查前是无法知晓的.记住,在正常的时候这个查询也是正常运行的.一个查询需要filesort和创建临时表并不一定意味着就是有问题的.尽管消除filesort和临时表通常来说是"最佳实践". 2.MySQL数据类型 更小的通常更好:一般情