zoukankan      html  css  js  c++  java
  • 高性能MySQL 第四章

    MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。

    不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。

    1、尽量避免过度设计,例如会导致极其复杂查询的schema设计,或者有很多列的表设计(很多的意思是介于有点多和非常多之间)。

    2、使用小而简单的合适数据类型,除非真实数据模型中有确切的需要,否则应该尽可能地避免使用NULL值。

    3、尽量使用相同的数据类型存储相似或相关的值,尤其是要在关联条件中使用的列。注意可变长字符串,其在临时表和排序时可能导致悲观的按最大长度分配内存。

    4、尽量使用整型定义标识列。

    5、避免使用MySQL已经遗弃的特性,例如指定浮点数的精度,或者整数的显示宽度。

    6、小心使用ENUM和SET。虽然它们用起来很方便,但是不要滥用,否则有时候会变成陷阱。最好避免使用BIT。

    范式及其优缺点

    在范式化的数据库中,每个事实数据会出现并且只出现一次

    优点:

    范式化的更新操作通常比反范式话要快

    当数据较好的范式化时,就只有很少或者没有重复数据,所以只需要修改更少的数据

    范式化的表通常更小,可以更好地放在内存里,所以执行操作会更快

    很少有多余的数据意味着检索列表数据时更少需要 DISTINCT 或者 GROUP BY 语句

    缺点:

    表需要关联

    反范式及其优缺点

    在范式化的数据库中,信息是冗余的,可能会存储在多个地方

    优点:

    因为所有的数据都在一张表中,可以很好地避免关联

    可以设计有效的索引

    缺点:

    表格内的冗余较多,删除数据时候会造成表有些有用的信息丢失

    范式是好的,但是反范式(大多数情况下意味着重复数据)有时也是必需的,并且能带来好处。

    最后,ALTER TABLE是让人痛苦的操作,因为在大部分情况下,它都会锁表并且重建整张表

  • 相关阅读:
    2017.04.05-2017.07.14封闭开发总结
    Android读取Manifest文件下Application等节点下的metadata自定义数据
    MyEclipse Hibernate Reverse Engineering 找不到项目错误
    web服务器决定支持多少人同时在线的因素
    配置servers时,错误:Setting property 'source' to 'org.eclipse.jst.jee.server:hczm' did not find a matching property
    查看端口被占用
    高德开发 android 出现 key 鉴权失败
    Android EventBus
    javascript 中的数据驱动页面模式
    读书笔记之
  • 原文地址:https://www.cnblogs.com/stone94/p/12318767.html
Copyright © 2011-2022 走看看