zoukankan      html  css  js  c++  java
  • 数据的水平分割

           早前公司有个大系统没有做数据的水平分割,导致兴许的性能优化不能做到最佳,有些功能优化到7s,8s就无法继续了。这个大系统曾经是分21个点部署,然后进行了大集中,仅仅部署了一个点。

           1. 在做数据的水平切割之前一定要理解系统的业务。我的系统是MIS,数据能够分为两类:一类是基础数据,一类是业务流程数据。基础数据的理解就是支撑其它业务流转的数据,如部门、人员、权限、资源库等。业务流程数据就是业务单据,如报销流程等。

           2. 基础数据是不用做水平的分割的,当然假设是腾讯这样的系统,人员信息很大的还是要做分割的,我们的系统基础数据往往是很小的。业务流程数据要做水平分割。

           3. 分割的几种方式,如果有限制有30个局的数据:

              a. 分表

                    长处:安全性更高,MIS系统上线后实施免不了要在后台改数据,万一少写一个条件就悲剧了。对开发者的数据库技能要求低一些,在1千万的表上操作比在一亿的表上操作要简单。

                    缺点:做查询的时候要组装;在跨局做统计的时候实现会复杂一些。DDL操作要写非常多脚本。

              b. 分区

                    长处:写代码简单;跨局统计方便。

                    缺点:一定要确保带分区条件,对开发者的数据库操作技能更高。DDL(加字段,改动字段类型或长度,加索引都是DDL)会比較困难,假设表上有操作,DDL都会失败。跟分表的不同,

             4. 终于的分割方式

                   分表:数据量巨大的表,安全性高的表。

                   单分区非重点模块,数据量不大,无需做过期化

                   复合分区重点模块,须要做过期化的模块

                   不做分区和分表:基础数据。

  • 相关阅读:
    .net core 3.1 使用Redis缓存
    JavaSE 高级 第11节 缓冲输入输出字节流
    JavaSE 高级 第10节 字节数组输出流ByteArrayOutputStream
    JavaSE 高级 第09节 字节数组输入流ByteArrayInputStream
    JavaSE 高级 第08节 文件输出流FileOutputStream
    JavaSE 高级 第07节 文件输入流FileInputStream
    JavaSE 高级 第06节 初识I、O流
    JavaSE 高级 第05节 日期类与格式化
    JavaSE 高级 第04节 StringBuffer类
    JavaSE 高级 第03节 Math类与猜数字游戏
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4087386.html
Copyright © 2011-2022 走看看