zoukankan      html  css  js  c++  java
  • 表设计与SQL优化

    1. 说说分区表的主要好处是什么,为什么会有这些好处。

    分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。

    从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL DML 命令访问分区后的表时,无需任何修改。

    对于超级大表来说,分区可以大大提高性能,不仅是操作方面的,还有维护管理方面

    好处:访问路径减少,查询更快

            操作方便(truncate、drop、split、add、exchange)

               增加可用性,某个分区坏掉了,其他分区还可以使用

               IO均衡,可以把不同分区放到不同磁盘上

    l 减少访问路径,查询更快:只查看对应分区的数据

    clip_image002

    l 操作方便(truncate、drop、split、add、exchange),直接操作分区数据,不需要操作全表数据!

    truncate:alter table part_tab_trunc truncate partition p1 ;

    drop:alter table part_tab_drop drop partition p1 ;

    split:alter table part_tab_split SPLIT PARTITION P_MAX at (70000) into (PARTITION p7 ,PARTITION P_MAX);

    Drop:--注意:必须要把默认分区去掉,再add分区,再增加默认分区,这里要担心丢数据!

    alter table part_tab_add drop partition p_max;

    alter table part_tab_add add PARTITION p6 values less than (60000);

    alter table part_tab_add add PARTITION p_max values less than (maxvalue);

    exchange:alter table part_tab_exch exchange partition p1 with table normal_tab including indexes update global indexes;

    2. 说说全局临时表的主要好处是什么。

    l 自动清理数据

    提交后自动清理:

    clip_image004

    断开Session自动清理:

    clip_image006

    l 不同session独立

    clip_image008

    l 产生日志较少

    clip_image010

    3. 举例说明一下什么时候使用分区表性能比普通表还差。

    如果查询的列不是分区的列,那么分区索引会导致性能更差,因为有多少个分区,就要查询多少个索引。设计的时候,要注意根据最常用的查询列进行分区,否则不但不会提高性能,反而会使性能下降!

    clip_image012

    clip_image014

    而普通表的普通索引只要查一次就可以了

    clip_image016

    clip_image018

  • 相关阅读:
    sed 简明教程
    简明 Vim 练级攻略
    AWK 简明教程
    TCP 的那些事儿(下)
    TCP 的那些事儿(上)
    CentOS 7系统安装配置图解教程
    Google Chrome谷歌/火狐/Safari浏览器开发者工具基本使用教程
    《Ext JS模板与组件基本框架图----组件》
    ExtJS关于组件Component生命周期
    《Ext JS模板与组件基本知识框架图----模板》
  • 原文地址:https://www.cnblogs.com/oraclesea/p/5265198.html
Copyright © 2011-2022 走看看