sql 账号查询一个表查询权限_一个查询语句引发的问题以及巨型表相关操作探索与思考...

背景:

关于这个标题想了试了好几个总觉得欠那么点意思。大致情况是,在某服务支持中,1张大表4.5T左右,该表也是分区表。其中一个执行频繁的SQL写法有很大问题,导致巨表全量扫描,造成IO负载很大,业务收到严重影响。

 由于线上阶段基本上没有改SQL的可能, 只能通过其他途径优化。现场想到一种可行的方案,周末实在手痒,决定测试测试该方案理论上的可行性。

基本情况:

数据库:Oracle 11G

表情况:4.5T左右,二级分区表,3.9万分区,分区如果有数据的话,数据量不大大概是2-3G左右。

分区字段:数据日期+XXX字段。

分区:range-range(应该是range-range这边有点模糊)

SQL情况

SQL比较长,也有好多张表关联,这边只重点说出现性能瓶颈的地方,

SQL:where trunc(分区字段)=trunc(XX, yyyy-mm-dd) and XX like :B ;

导致识别不了分区,只能全分区扫描。

本机测试

表:par_range_range

分区类型:range-range; 

分区字段:data_dt (DATE类型);  hash_flag (number类型)

SQL:模拟生产环境出现的问题

select  count(1) from   par_range_range t

where  hash_flag <1.5 and  hash_flag>=0.1

andtrunc(data_dt) = trunc(to_date('2020-11-01', 'yyyy-mm-dd'));

问题就是 trunc(data_dt) 无法识别那个分区只能走全分区扫描,有经验的人立马知道怎么搞,实际中把搞成 trunc(to_date('2020-11-01', 'yyyy-mm-dd'))<= data_dt < to_date('2020-11-02','yyyy-mm-dd')。现场调整后也是秒杀的,但是甲方需要不改SQL,就能优化。

实验课题:

通过建立索引优化该SQL,(该问题引发一系列思考)

探索巨表建立索引方案(其实这里更感兴趣)

  1. 通过建立合适索引把全表扫描转换成索引扫描

  2. 巨表怎么建立索引?保证不会占用太多系统资源,比如IO,内存,temp. 甚 至做到系统无感知。因为已经出现了扫描巨表数据时候IO超负载。

  3. 前两个可行基础上加快建索引速度

这怎么看都是一个不可能完成的任务。

这里说下最终方案:

建立需要分区索引,建索引时候也要讲究,最初建索引的语句要带上unusable 关键字,这样建索引时候就不会创建索引段,自然也不会扫描表数据。所以这边建立索引能很快完成。

随即按照分区,重建分区索引。因为这边只需要扫描单个表分区,就能很快完成对应分区索引的重建,毕竟扫描数据量小了很多。因此整体方案理论上可行。

数据量:445万,722M ,本机测试环境,数据量有限。这边测试原理

7b0dbd5a17682ccc1cfe0fb06f58ced1.png

79c8bd5b99d9dc0a22eb21d29c22f2d3.png

建立索引语句:

create   index idx_prr_dt_flag  on 

par_range_range(trunc(data_dt),hash_flag) local  unusable;

测试环境中很快完成。

5f1887f25a9de31b6a136152e78da5a1.png

建立后查询索引分区:

1437706f2990115ebf80fc7e6171ca06.png

重建分区索引。

0ce08e5f0de8c2b314a7fb4e71136372.png

重建完成后,这边只查询到重建的索引分区的segement。说明符合预期,只有在rebulid时候才创建索引segement。

92ee706dc7c6801dacd6ea5a4fe90659.png

优化效果(重建完所有分区后):

优化前:全表扫描 4.3万逻辑读/次,

优化后:索引范围扫描,414万逻辑读/次 效率提升了近100倍

2acd5c7e89d40db37dd0bfa5aebd94df.png

总结:

该方案精彩的地方在于把复杂的大表建立索引,成功转换成更加细微力度的建立分区索引,解决了大表建立索引过程中带来的IO,内存等系统资源占用率超大等问题。而重建分区索引,单个分区的数据量要小得多,当然重建也容易的多。最终把问题SQl成功优化。

结束语:

本文就是利用延迟加载,完成超大表建立索引,然后再实践中总结知识点。用论语中一句话结尾吧。论语:知之为知之,不知为不知。我在想是不是可以这样“探索”,知之,为,知之!,不知为,不知。可以这样解读:掌握一门知识,并且赋予实践。然后在实践中再总结知识。不了解或者不掌握一门知识,直接干,最终是不能总结出知识的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 亮屏速度分析

前面聊的最近在调试项目的亮屏速度&#xff0c;我们希望在按下power键后到亮屏这个时间能达到500MS以内&#xff0c;在Rockchip 3399和3288上面的时间都不能达到要求&#xff0c;因此引发了一系列的调试之路。计算按下power键到亮屏的时间Android 唤醒时间统计刚开始的时候&…

Linux中一些 不是很常用的配置修改

1&#xff0c;让虚拟机屏幕最大化 &#xff1a;查看-->自动调整大小-->自动适应客户机 2&#xff0c;让虚拟机取消屏保&#xff1a; system --> preferences --> Screensaver转载于:https://www.cnblogs.com/aiyr/p/6713579.html

python 怎么拷贝一个文件到一个新的文件_Python脚本提取不同文件夹里面的文件到一个新的文件...

这条博客分享一个脚本&#xff0c;实现将不同文件夹的我们需要的文件提取到一个新的文件下。如&#xff1a;这是原来文件下的文件&#xff0c;我将它重新命名&#xff0c;然后复制到下图的文件夹下&#xff0c;实现将很多不同文件夹下很多我们想要的文件提取出来&#xff0c;省…

container_of实例

1 前面说的 container_of 在linux内核代码里面使用非常多&#xff0c;对于喜欢linux编程的同学来说&#xff0c;对这个函数要非常清楚他的使用方法&#xff0c;而且还要知道他的原理&#xff0c;这对以后看内核代码&#xff0c;写内核驱动的帮助都非常大&#xff0c;当然&…

Git 分布式版本控制工具 03Git常用命令:Git全局设置+本地与远程仓库操作获取Git仓库+标签操作+忽略名单+工作区、暂存区、版本库+分支操作+暂时保存

Git常用命令目录4 Git常用命令4.1 Git全局设置4.2 获取Git仓库4.2.1 在本地初始化Git仓库4.2.2 从远程仓库克隆4.3 常见的概念&#xff1a;工作区、暂存区、版本库4.4 常见的概念&#xff1a;Git工作区中文件的状态4.5 本地仓库操作4.5.1 git status4.5.2 git add4.5.3 git res…

css属性

CSS属性 字体属性&#xff1a; (font) 大小 font-size: x-large;(特大) xx-small;(极小) 一般中文用不到&#xff0c;只要用数值就可以. 单位&#xff1a;PX、PD 样式 font-style: oblique;(偏斜体) italic;(斜体) normal;(正常) 行高 line-height: normal;(正常) 单位&…

matlab dir函数_MATLAB自动管理文件

MATLAB自动管理文件1. MATLAB中路径设置(1)cd:用于切换当前工作目录示例&#xff1a;将当前工作目录切换到D:\Documents\MATLAB\Matlab test\study下。代码:cd (D:\Documents\MATLAB\Matlab test\study)(2)path:用于对搜索路径的操作示例&#xff1a;先查看当前所有的文件路径&…

git上传大于100M的文件

错误日志 Git lfs - “this exceeds GitHub’s file size limit of 100.00 MB” 解决办法 看这个网址 https://git-lfs.github.com/ 下载上面的后&#xff0c;然后使用下面的命令使用 git lfs install 上面下载而已&#xff0c;并没有安装 git lfs track “*.rar” 这个是要…

Git 分布式版本控制工具 04Gitcode案例:多人协作开发流程+创建仓库+拉取操作+克隆仓库+拉取远程仓库中最新的版本+修改拉取的本地代码

文章目录5. Gitcode5.1 多人协作开发流程5.2 创建仓库5.3 拉取操作5.3.1 克隆仓库5.3.2 拉取远程仓库中最新的版本5.4 修改拉取的本地代码5.5 解决冲突5.6 跨团队协作5. Gitcode 在版本控制系统中&#xff0c;大约90%的操作都是在本地仓库中进行的&#xff1a;暂存&#xff0c…

XHTML结构化

XHTML 规则概要 将传统的 HTML 转换为 XHTML 1.0 是快捷且无痛的&#xff0c;只要你遵守一些简单的规则和容易的方针。不管是否使用过 HTML&#xff0c;都不会妨碍你使用 XHTML。 使用恰当的文档类型声明和命名空间。使用 meta 元素声明你的内容类型。使用小写字母书写所有的元…

rabbitmq如何保证消息不被重复消费_如何保证消息不被重复消费

一. 重复消息为什么会出现消息重复&#xff1f;消息重复的原因有两个&#xff1a;1.生产时消息重复&#xff0c;2.消费时消息重复。1.1 生产时消息重复由于生产者发送消息给MQ&#xff0c;在MQ确认的时候出现了网络波动&#xff0c;生产者没有收到确认&#xff0c;实际上MQ已经…

JavaScript RegExp 对象

// 1 创建正则表达式两种方式 // 1.1 用new // 第1个参数模式是必须的 第2个模式修饰符参数可选 // i:忽略大小写 g:全局匹配 m:多行匹配 var box new RegExp(Box); var box new RegExp(Box, gim);// 1.2 用字面量的形式 // 两个反斜杠是正则表达式的字面量表示形成 var box …

Git 分布式版本控制工具 06在IDEA中使用Git:获取Git仓库+本地仓库操作+远程仓库操作+创建/查看/切换/推送/合并分支操作

在IDEA中使用Git7. 在IDEA中使用Git7.1 在IDEA中配置Git7.2 获取Git仓库7.2.1 本地初始化仓库7.2.2 从远程仓库克隆7.3 Git忽略文件7.4 本地仓库操作7.4.1 将文件加入暂存区7.4.2 将暂存区文件提交到版本库7.4.3 查看日志7.5 远程仓库操作7.5.1 查看远程仓库7.5.2 添加远程仓库…

linux 内核宏container_of剖析

1、前面说的我在好几年前读linux 驱动代码的时候看到这个宏&#xff0c;百度了好久&#xff0c;知道怎么用了&#xff0c;但是对实现过程和原理还是一知半解。container_of宏 在linux内核代码里面使用次数非常非常多&#xff0c;对于喜欢linux编程的同学来说&#xff0c;了解其…

目录树 删除 数据结构_数据结构:B树和B+树的插入、删除图文详解

B树1.1B树的定义B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数&#xff0c;阶数表示了一个结点最多有多少个孩子结点&#xff0c;一般用字母m表示阶数。当m取2时&#xff0c;就是我们常见的二叉搜索树。一颗m阶的B树定义如下&#xff1a;1)每个结点最…

MMdetection框架速成系列 第01部分:学习路线图与步骤+优先学习的两个目标检测模型代码+loss计算流程+遇到问题如何求助+Anaconda3下的安装教程(mmdet+mmdet3d)

mmdetection 学习目录1 mmdetection 学习建议1.1 mmdetection 学习的第一件事1.2 mmdetection学习路线图1.2.1 优先看的两个库1.2.2 阅读代码1.2.3 代码学习步骤1.2.4 建议优先学习的两个目标检测模型代码1.2.5 loss计算流程的攻坚克难1.3 遇到问题如何求助2 Anaconda3下的安装…

分页查询千万级数据慢

mysql查询千万级数据越来越慢优化: 1.分表:(固定某个表存多少数量的数据:例如:一张表存100w的数据量); 2.优化sql和建立适合的索引(复合索引); 3.使用redis缓存。(redis存一份ID.然后mysql存一份ID每次插入删除的时候同步即可。查询的时候只需要从redis里面找出适合的10个ID,然…

python爬取天气数据山东_Python的学习《山东省各城市天气爬取》

Pythonscrapy爬取山东各城市天气预报1、在命令提示符环境使用pip install scrapy命令安装Python扩展库scrapy&#xff0c;详见Python使用Scrapy爬虫框架爬取天涯社区小说“大宗师”全文2、使用下图中的命令创建爬虫项目3、进入爬虫项目文件夹&#xff0c;执行下面的命令创建爬虫…

Data-structures-and-algorithms-interview-questions-and-their-solutions

https://techiedelight.quora.com/500-Data-structures-and-algorithms-interview-questions-and-their-solutions转载于:https://www.cnblogs.com/zengkefu/p/6724312.html

机器人循迹小车资料

前言 我记得在大学的时候&#xff0c;参加电子比赛&#xff0c;我们有一个题目是平衡小车项目&#xff0c;那个对基础要求还是比较高的&#xff0c;总结了一些平衡车机器的资料&#xff0c;希望对大家有帮助。 正文 关注公众号&#xff0c;回复【机器人资料】获取