MySQL优化之Schema设计

数据库 MySQL
因为简单数据类型的操作通常需要更少的CPU周期。eg:整型比字符型更好;使用MySQL内建的类型如date、datetime、time等而不是字符串来存储日期和时间;使用整型来存储IP地址而非字符串。

[[402757]]

本文转载自微信公众号「小猪notebook」,作者钟Ger。转载本文请联系小猪notebook公众号。

参考文献:《高性能MySQL(第三版)》

1. 更优化的数据类型

(1)选择可以正确存储数据的最小数据类型。 因为它们占用更少的磁盘、内存和CPU缓冲,且处理时需要的CPU周期也更少。

(2)简单的数据类型。 因为简单数据类型的操作通常需要更少的CPU周期。eg:整型比字符型更好;使用MySQL内建的类型如date、datetime、time等而不是字符串来存储日期和时间;使用整型来存储IP地址而非字符串。

(3)尽量避免NULL。通常情况下最好指定列为NOT NULL。因为若查询中包含可以为NULL的列,对于MySQL对可为NULL列使用索引、索引统计和值比较都更复杂。

我们建表时选择数据类型参考上图的流程即可。

2. MySQL数据类型大致整理

我们开发中常用的MySQL数据类型整理如下:

在建表的过程中,我们可以根据不同数据类型的优缺点来进行选取,从而使得表的存储空间与性能达到最优。

3. 一些简单的设计原则

一些我们开发过程中值得借鉴的表设计原则总结:

  • 避免过度设计,减少产生复杂查询的schema、多列表的设计
  • 使用小而简单的合适数据类型,除非真实数据模型中有明确需要,否则尽可能避免使用null值,而应该给每个列设置一个默认0值
  • 尽可能使用相同数据类型存储相似或相关的值,尤其是关联条件中使用的列
  • 可变长字符串中尽可能按需设置字符串的长度
  • 避免使用MySQL废弃的特性,例如指定浮点数的精度、整数的显示宽度等
  • 希望每位Developer都能够好好设计表,减少被公司的DBA吐槽的机会 

 

责任编辑:武晓燕 来源: 小猪notebook
相关推荐

2017-10-24 14:05:16

MySQLSchema数据类型

2020-10-26 07:16:10

MySQLSchema数据

2010-06-12 15:31:04

MySQL查询优化

2024-10-09 23:32:50

2011-03-11 15:53:02

LAMP优化

2018-10-19 12:47:35

MySQLSQL优化数据库

2011-08-18 13:57:47

Star Schema

2017-09-05 12:44:15

MySQLSQL优化覆盖索引

2018-05-21 08:07:35

聚合MongoDBSchema

2011-06-22 17:11:18

SEO

2024-11-11 08:31:32

2011-04-28 09:36:22

海量数据存储

2020-10-19 19:45:58

MySQL数据库优化

2017-01-18 10:57:24

MySQLZabbix监控

2019-09-04 08:13:53

MySQLInnodb事务系统

2011-07-11 15:28:19

MySQL索引优化

2019-10-28 09:11:53

MySQL性能优化

2024-03-06 20:00:50

MySQL优化器索引

2011-06-24 16:44:43

网站优化

2011-06-28 18:04:06

网站优化
点赞
收藏

51CTO技术栈公众号