zoukankan      html  css  js  c++  java
  • 数据库设计经验总结

    • 使用数据库的理由
      • 不同服务之间的数据同步、共享
      • 不同实例之间的数据同步、共享
      • 数据持久化,避免重启丢失(和放到内存中相比)
    • 同质数据的存储
      • 放在不同的表中
        • 在这几张表中联合查询较慢
      • 在同一张表中,用type字段来区分(字符串类型,或者int引用另一张类型表的id)
        • 单表数据量较大(可以考虑分表)
        • 不同类型数据之间如果有不同字段,会导致字段冗余
          • 一种方式是不同类型数据的字段都定义上,缺点是字段名固定,每种类型的数据就都有了用不到的字段
          • 另一种方式是提前创建一些预定义的字段,如int1, int2, string1, string2等,然后对于不同的数据类型有不同的含义,缺点是从表结构上比较难看出字段数据的含义
    • 选项表的设计
    • 运算列的设计
      • 如果某一列是计算所得(即使只是几个列的简单拼接)
        • 空间换时间:单独的列和计算的列都存储,这样的话既可以根据单独的列进行搜索,也可以按计算列或合并列进行搜索
    • 升级
      • 服务端:数据迁移、代码调整
      • 客户端:对于sqlite等这种用户设备上的内嵌数据库,同样需要升级数据库结构和数据,但更加复杂,因为用户库可能是不同版本的状态
  • 相关阅读:
    Linux 磁盘与文件系统管理
    mysql join
    iostat
    解决TIME_WAIT过多问题
    mysql 数据库性能追踪与分析
    CHECKPOINT
    DTRACE -MYSQL
    ORCLE INNODB 博客与 innodb_lru_scan_depth
    innodb 变量
    mysql博客
  • 原文地址:https://www.cnblogs.com/wyp1988/p/9850216.html
Copyright © 2011-2022 走看看