検索

检查数据倾斜分布

Jun 07, 2016 pm 04:04 PM
傾けるデータデータベース診る

从传统数据库迁移到GP中一个重要的且经常被开发人员忽略的概念是数据分布,没有良好的设计表的分布键会导致严重的性能问题,以下函数将给开发人员及DBA检测一个表的数据倾斜情况。 -- Function: gpmg.data_skew(character varying) -- DROP FUNCTION gpmg.da


从传统数据库迁移到GP中一个重要的且经常被开发人员忽略的概念是数据分布,没有良好的设计表的分布键会导致严重的性能问题,以下函数将给开发人员及DBA检测一个表的数据倾斜情况。
-- Function: gpmg.data_skew(character varying)
 
-- DROP FUNCTION gpmg.data_skew(character varying);
 
CREATE OR REPLACE FUNCTION gpmg.data_skew(tablename character varying)
  RETURNS text AS
$BODY$
--2014-05-26,Gtlions,收集和统计数据倾斜情况
declare
  v_func character varying(200)='gpmg.data_skew()';
  v_begin_time timestamp;
  v_end_time timestamp;
  v_status int=0;
  v_msg text='Done.';
  v_record record;
 
  v_id integer;
  v_rq timestamp;  
  v_segs integer=64;
  v_totalnums bigint=0;
  v_maxskew numeric=0.0;
  v_minskew numeric=0.0;
  v_maxskew_seg varchar(20);
  v_minskew_seg varchar(20);
  v_maxrows bigint=0;
  v_minrows bigint=0;   
  v_result varchar(2000);
 
begin
  v_id=nextval('gpmg.commonseq');
  v_rq=now();
  v_begin_time=clock_timestamp();
  v_result = 'GP hava ';
  select into v_segs count(*) segs from gp_segment_configuration where role=&#39;p&#39; and content<>-1;
  v_result = v_result||v_segs||&#39; instances, Standard skew is &#39;||1.0/v_segs||&#39;. &#39;;
  -- bg1 segid, bg2 节点记录数量
  execute &#39;insert into gpmg.commontab(seq,tabname,bg1,bg2) select &#39;||v_id||&#39;,&#39;&#39;&#39;||$1||&#39;&#39;&#39;,gp_segment_id,count(*) segrownums from &#39;||$1||&#39; group by rollup(( gp_segment_id)) order by gp_segment_id&#39;;
  select into v_segs,v_totalnums v_segs,max(bg2) from gpmg.commontab where seq=v_id and tabname=$1;
  --nm1 标准倾斜率, nm2 节点倾斜率, nm3 标准-节点倾斜率绝对值
  update gpmg.commontab set nm1=1::numeric/v_segs,nm2=bg2::numeric/v_totalnums,nm3=abs(1::numeric/v_segs-bg2::numeric/v_totalnums) where seq=v_id and tabname=$1;
  select into v_maxskew,v_minskew max(nm2),min(nm2) from gpmg.commontab where seq=v_id and tabname=$1 and bg1 is not null;
 
  select into v_maxskew_seg hostname from gp_segment_configuration where role=&#39;p&#39; and content in (select bg1 from gpmg.commontab where seq=v_id and tabname=$1 and bg1 is not null and nm2=v_maxskew limit 1);
  select into v_minskew_seg hostname from gp_segment_configuration where role=&#39;p&#39; and content in (select bg1 from gpmg.commontab where seq=v_id and tabname=$1 and bg1 is not null and nm2=v_minskew limit 1);
 
  select into v_maxrows bg2 from gpmg.commontab where seq=v_id and tabname=$1 and bg1 is not null and nm2=v_maxskew limit 1;
  select into v_minrows bg2 from gpmg.commontab where seq=v_id and tabname=$1 and bg1 is not null and nm2=v_minskew limit 1;
 
  v_result =v_result ||&#39;You Table [&#39;||$1||&#39;] skew info: [table_totalrows:&#39;||v_totalnums||&#39;, maxskew:seg-&#39;||v_maxskew_seg||&#39;, rows-&#39;||v_maxrows||&#39; &#39;||v_maxskew||&#39;, minskew:seg-&#39;||v_minskew_seg||&#39;, rows-&#39;||v_minrows||&#39; &#39;||v_minskew||&#39;]&#39;;
  delete from gpmg.commontab where seq=v_id and tabname=$1;
  return v_result;
  v_end_time=clock_timestamp();
end;
$BODY$
  LANGUAGE plpgsql VOLATILE;
ALTER FUNCTION gpmg.data_skew(character varying)
  OWNER TO gpadmin;
GRANT EXECUTE ON FUNCTION gpmg.data_skew(character varying) TO public;
GRANT EXECUTE ON FUNCTION gpmg.data_skew(character varying) TO gpadmin;

bigdatagp=# select gpmg.data_skew(&#39;gpmg.manager_table&#39;);
                                                                                                            data_skew                                                  
                                                           
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------
 GP hava 64 instances, Standard skew is 0.01562500000000000000. You Table [gpmg.manager_table] skew info: [table_totalrows:83, maxskew:seg-sdw16, rows-3 0.036144578313
25301205, minskew:seg-sdw2, rows-1 0.01204819277108433735]
(1 row)
 
bigdatagp=# select gpmg.data_skew(&#39;gpmg.func_log&#39;);
                                                                                                             data_skew                                                 
                                                             
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------
 GP hava 64 instances, Standard skew is 0.01562500000000000000. You Table [gpmg.func_log] skew info: [table_totalrows:53708, maxskew:seg-sdw10, rows-907 0.016887614508
08073285, minskew:seg-sdw7, rows-773 0.01439264169211290683]
(1 row)
2014-10-14 09:53:00


-EOF-
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQLと他のSQL方言の構文の違いは何ですか?MySQLと他のSQL方言の構文の違いは何ですか?Apr 27, 2025 am 12:26 AM

MySQLdiffersfromotherSQLdialectsinsyntaxforLIMIT,auto-increment,stringcomparison,subqueries,andperformanceanalysis.1)MySQLusesLIMIT,whileSQLServerusesTOPandOracleusesROWNUM.2)MySQL'sAUTO_INCREMENTcontrastswithPostgreSQL'sSERIALandOracle'ssequenceandt

MySQLパーティションは何ですか?MySQLパーティションは何ですか?Apr 27, 2025 am 12:23 AM

MySQLパーティション化により、パフォーマンスが向上し、メンテナンスが簡素化されます。 1)大きなテーブルを特定の基準(日付範囲など)、2)物理的に独立したファイルに物理的に分割する、3)MySQLはクエリするときに関連するパーティションに焦点を合わせることができます。

MySQLで特権をどのように許可して取り消しますか?MySQLで特権をどのように許可して取り消しますか?Apr 27, 2025 am 12:21 AM

mysqlで許可を許可および取り消す方法は? 1。grantallprivilegesondatabase_name.to'username'@'host 'などの許可を付与するために付与ステートメントを使用してください。 2。Revokeallprivilegesondatabase_name.from'username'@'host 'など、Revoke Statementを使用して、許可のタイムリーな通信を確保します。

InnoDBとMyisamストレージエンジンの違いを説明してください。InnoDBとMyisamストレージエンジンの違いを説明してください。Apr 27, 2025 am 12:20 AM

INNODBは、トランザクションサポートと高い並行性を必要とするアプリケーションに適していますが、Myisamはより多くの読み取りとより少ない書き込みを必要とするアプリケーションに適しています。 1.INNODBは、eコマースおよび銀行システムに適したトランザクションおよび銀行レベルのロックをサポートしています。 2. Myisamは、ブログやコンテンツ管理システムに適した、迅速な読み取りとインデックス作成を提供します。

MySQLの結合のさまざまなタイプは何ですか?MySQLの結合のさまざまなタイプは何ですか?Apr 27, 2025 am 12:13 AM

MySQLには4つのメイン結合タイプがあります:innerjoin、leftjoin、rightjoin、fullouterjoin。 1.InnerJoinは、結合条件を満たす2つのテーブルのすべての行を返します。 2.右のテーブルに一致する行がない場合でも、Leftjoinは左のテーブルのすべての行を返します。 3。右joinはleftjoinに反しており、右のテーブルのすべての行を返します。 4.fullouterjoinは、結合条件を満たしている、または満たさない2つのテーブルのすべての行を返します。

MySQLで利用可能なさまざまなストレージエンジンは何ですか?MySQLで利用可能なさまざまなストレージエンジンは何ですか?Apr 26, 2025 am 12:27 AM

mysqloffersvariousstorageEngines、それぞれのfordifferentusecases:1)Innodbisidealforapplicationsingingidcomplianceanceandhighconcurrency、support transactions andforeignkeys.2)myisamisbestforread-havyworkloads、transactionsupptort.3)

MySQLの一般的なセキュリティの脆弱性は何ですか?MySQLの一般的なセキュリティの脆弱性は何ですか?Apr 26, 2025 am 12:27 AM

MySQLの一般的なセキュリティの脆弱性には、SQLインジェクション、弱いパスワード、不適切な許可構成、および非合事ソフトウェアが含まれます。 1。SQL注射は、前処理ステートメントを使用することで防ぐことができます。 2。強力なパスワード戦略を強制的に使用することにより、弱いパスワードを回避できます。 3.不適切な許可構成は、ユーザー許可の定期的なレビューと調整を通じて解決できます。 4.未使用のソフトウェアは、MySQLバージョンを定期的にチェックして更新することでパッチを適用できます。

MySQLでスロークエリをどのように識別できますか?MySQLでスロークエリをどのように識別できますか?Apr 26, 2025 am 12:15 AM

MySQLの遅いクエリを識別することは、遅いクエリログを有効にし、しきい値を設定することで実現できます。 1.スロークエリログを有効にし、しきい値を設定します。 2.スロークエリログファイルを表示および分析し、詳細な分析のためにMySQLDumpSlowやPT-Query-Digestなどのツールを使用します。 3.インデックスの最適化、クエリの書き換え、およびselect*の使用を回避することで、遅いクエリの最適化を実現できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、