zoukankan      html  css  js  c++  java
  • 优化数据库对象

    procedure analyse()


    优化表的数据类型 使用procedure analyse()对当前应用的表进行分析 

    select * from table_name procedure analyse();

    select * from table_name procedure analyse(16,256);

    第二个语句告诉procedure analyse()不要为那些包含的值多余16个或者256个字节的ENUM类型提出建议

    select * from rental procedure analyse()G;

    File_name 列的名字
    Min_Value 列种的最小值
    Max_Value 列中的最大值
    Min_length 列种值最小的长度
    Max_length 列中值最大的长度
    Optimal_fieldType 给出的建议

    拆分提高表的访问效率


     

    垂直拆分

    如果一个表中某些列常用,而另一些列不常用,则可以采用垂直拆分。 

    垂直拆分的优点

    垂直拆分可以使数据行变小,一个数据页就能存放更多的数据,在查询时就会减少I/O次数。

    缺点

    需要管理冗余列,查询所有数据需要join操作。

    水平拆分

    根据一列或者多列数据的值把数据行放在两个独立的表中

    优点

    表很大,分割后可以降低在查询时需要读的数据与索引的页数,同时也降低了索引的层数,提高了查询的速度。

    表中的数据本来就有独立性,例如:表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用

    缺点

    需要把数据存在多个介质上

    水平拆分会给应用增加复杂度,查询所有的数据需要UNION操作。

    逆规范化


    规范化:

    规范化越高,那么产生的关系就越多,关系越多的直接结果就是导致表之间的连接操作越频繁。表之间的连接操作是性能较低的操作,直接影响到查询的速度。

    反规范化:

    反规范的好处是降低连接操作的需求,降低外键和索引的数目,还可能减少表的数目。加快查询速度,但会降低修改速度。

    反规范化分类:

    增加冗余列

    多个表中具有相同的列,常用来在查询时避免连接操作

    派生列

    增加的列来自其他表的数据,其他表中的数据是经过计算生成。作用是在查询时减少连接操作,避免使用集函数

    重新组表

    如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能

    分割表

    垂直分割与水平分割

    维护反范式数据的完整性常用方法

    批处理

    批处理维护是指对复制列或者派生列的修改累积一定时间后,运行一批处理作业或者存储程序对复制列或派生列进行修改,只能在对实时性要求不高的情况下使用

    应用逻辑

    数据的完整行也可由应用逻辑来实现,这就要求必须在同一事务中对所有涉及的表进行增,删,改操作,用应用逻辑来实现数据的完整性风险性大,因为在同一逻辑必须在所有的应用中使用和维护,容易遗露,特别是在需求变化时,不易于维护。

    触发器

    对数据的任何修改立即触发对复制列或派生列的相应修改,触发器是实时的,而且相应的处理逻辑只在一个地方出现,易于维护。一般来说,是解决这类问题比较好的办法

    使用中间表提高统计查询的速度


    对于数据量大的表,在其上进行统计查询通常效率低,并且还要考虑统计查询是否会对在线的应用产生影响。在这种情况下,使用中间表可以提高统计查询的效率,

    优点

    中间表复制原表部分数据,并且与原表相隔离,在中间表上做统计查询不会对在线应用产生负面影响。

    可以灵活地添加索引,增加临时用的新字段,从而达到提高统计查询效率和辅助统计查询的作用

  • 相关阅读:
    MVC路由测试
    关于Dapper的使用笔记3
    关于Dapper的使用笔记2
    关于Dapper的使用笔记1
    关于WCF与Autofac的整合
    js获取页面元素距离浏览器工作区顶端的距离
    document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题
    js实现获取对象key名
    微信小程序分包跳转主包页面
    js禁止页面滚动
  • 原文地址:https://www.cnblogs.com/dsitn/p/7096609.html
Copyright © 2011-2022 走看看