GP SQL 優化

来源:http://www.cnblogs.com/bbliutao/archive/2017/11/17/7850443.html
-Advertisement-
Play Games

1、收集統計信息vacuum full analyze ZCXT.ZCOT_PS_PROJECT; 2、檢查表的數據量分佈select gp_segment_id,count(*) from fact_table group by gp_segment_id; 3、表結構上建議創建表的時候,分佈鍵放 ...


1、收集統計信息
vacuum full analyze ZCXT.ZCOT_PS_PROJECT;

2、檢查表的數據量分佈
select gp_segment_id,count(*) from fact_table group by gp_segment_id;

3、表結構上
建議創建表的時候,分佈鍵放在最前面,接著是分區鍵,接著是大位元組的欄位到小位元組。

4、分佈鍵
把連接鍵定義為數據分佈鍵(如果多個列作為數據分佈鍵,他們應該都出現在連接中,否則還是會造成無效廣播),常用於join和where條件的列作為分佈鍵,最典型的例子是兩張做join的表都用需要連接的列作為分佈鍵。

5、寫法上
(1)、不用distinct,改用group by

(2)、UNION操作應該用UNION ALL加GROUP BY的方式進行改寫

(3)、一般不使用Index,索引的操作不超過5%

(4)關於or語法gp的OR語法效果很差,用
in (select 1 union all select 2) 代替 in (select 1 from t1) or in (select 2 from t2),
exists (select 1 union all select 2) 代替 exists (select 1 from t1) or exists (select 2 from t2),
特別是子查詢中,括弧內引用括弧外的欄位作為條件的情況,這種時候,同一張表多次引入來改寫OR語句效率都比 or高

(5)關於併列查詢
不要使用 (column_1,column_2) in (select c1,c2),而採用 exists,單欄位沒關係,2個及以上欄位效率可能存在問題


6、執行計划上避免大表的廣播
執行計劃廣播會顯示 broadcast
GreenPlum有三種數據的移動操作,會體現在執行計划上
(1)、BroadCast Motion(N:N),廣播數據。每個節點向其他節點廣播需要發送的數據。
(2)、Redistribute Motion(N:N),重新分佈數據。利用join的列值hash不同,將篩選後的數據在其他segment重新分佈
(3)、Gather Motion(N:1),聚合彙總數據,每個節點將join後的數據發到一個單節點上,通常是發到主節點master。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在iOS開發中,我們會經常遇到一個問題,例如,點擊一個按鈕,彈出一個遮罩層,上面顯示一個彈框,彈框顯示的位置在按鈕附近。如果這個按鈕的位置相對於屏幕邊緣的距離是固定的,那就容易了,可以直接寫死位置。可是,如果按鈕是在UITableView的cell上呢?隨著UITableView的滾動,按鈕可能在頂 ...
  • python自動安裝mysql5.7 python版本:python2.6 centos版本:centos6.9 mysql版本:mysql5.7.19 安裝目錄路徑和數據目錄路徑都是固定,當然也可以自己修改 這個腳本的原理是,通過createmycnf.sh的shell腳本生成my.cnf,buf ...
  • Redhat6.5 1、準備工作 卸載使用rpm包安裝的mysql-server、mysql軟體包 安裝自帶的ncurses-devel包 rpm -ivh /mnt/Packages/ncurses-devel-5.7-3.20090208.el6.x86_64.rpm ① 解壓cmake包 ta ...
  • 準備兩台設備,以我的為例一臺source ip:192.168.3.66和一臺duplicate ip:192.168.3.77 1》基於備份集複製資料庫,目錄結構都一樣(active database網路) 1.在duplicate端檢查有沒有亞參文件(如果沒有的話就創建) cd $ORACLE_ ...
  • 操作系統 :CentOS7.3.1611_x64 PostgreSQL版本 :9.6 問題描述 在InfluxDB中存儲時序數據時,當tag值和時間戳都相同時會執行覆蓋操作。在PostgreSQL中能不能這麼用呢? 解決方案 可以藉助唯一索引和update來實現,這裡記錄下以備後用。 1、創建帶有唯 ...
  • 本文出處:http://www.cnblogs.com/wy123/p/7851294.html 在做資料庫的異常診斷的時候,之前在SQL Server上的時候,最主要的參考信息之一就是去看當前的活動Session有哪些,這些活動Session分別在執行什麼語句,用的什麼執行方式(計劃),運行了多久 ...
  • 在寫之前交代一下背景吧! 做開發也好久了,沒怎麼整理過知識,現在剖析一下自己對資料庫事務的認識,以前用sqlserver,現在轉java後又用mysql、oracle。我這塊就主要解釋一下mysql資料庫事務。其實好多內容適用於各種標準資料庫! 直接就進入正文了! 不管是做啥都有理論知識,我在這塊也 ...
  • 連接池中的參數介紹: name:表示你的連接池的名稱也就是你要訪問連接池的地址 auth:是連接池管理權屬性,Container表示容器管理 type:是對象的類型 driverClassName:是資料庫驅動的名稱 url:是資料庫的地址 username:是登陸資料庫的用戶名 password: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...