ablog

不器用で落着きのない技術者のメモ

クエリ の検索結果:

MySQL の slow query log を Percona Toolkit の pt-query-digest で整形する

…次のセクションには、クエリー単位でノーマライズ・集計された結果が並びます。pt-query-digestはスローログを処理する際にリテラルをノーマライズします。column1 = 1やcolumn1 = 2といった数値リテラルはcolumn1 = Nという形に丸められ、同じクエリーとして扱われます(カラム名の数字は丸められないため、数字が入っているカラム名を利用していてもカラムが違えば識別される)。また、文字列リテラルや行リテラルもノーマライズされますので、個々のクエリーのパ…

Aurora Postgres で実行したクエリをログに出力する

…13.284 ms クエリを確認する AWSマネジメントコンソールから error/postgresql.log.*.csv を確認する。 参考 DB インスタンスに関連付けられている DB パラメータグループの 2 つパラメーター log_statement と log_min_duration_statement を設定することで、PostgreSQL DB インスタンスのクエリログ記録を有効にすることができます。log_statement パラメーターでは、どの SQL…

Aurora Postgres で track_activity_query_size を変更して pg_stat_activity.query に記録されるクエリの長さを拡張する

…024バイトを超えるクエリを実行してみて、pg_stat_activity.query で確認する。 select datid, datname, pid, usesysid, usename, application_name, client_addr, client_hostname, client_port, backend_start, xact_start, query_start, state_change, wait_event_type, wait_event…

Redshift のリザルトキャッシュを無効化する方法

…キャッシュを使わずにクエリ性能を計測したい場合は以下の手順で無効化できる。 手順 セッションレベルで無効化する方法 set enable_result_cache_for_session=off; ユーザーレベルで無効化する方法 ALTER USER awsuser SET enable_result_cache_for_session = off; 設定変更例 % psql "host=dc18xl4.*********.ap-northeast-1.redshift.am…

Redshift 検証メモ

… ビューを使用して、クエリのパフォーマンスに影響する可能性のあるテーブル設計の問題を診断し、対応できます。これには、圧縮エンコード、分散キー、ソートスタイル、データ分散スキュー、テーブルサイズ、および統計情報が含まれます。SVV_TABLE_INFO ビューは、空のテーブルの情報を返しません。 SVV_TABLE_INFO ビューには、STV_BLOCKLIST、STV_PARTITIONS、STV_TBL_PERM、および STV_SLICES システムテーブルと、PG_D…

MySQL で NOT NULL 制約のある列に複数行インサートするとその型のデフォルト値が入る

…値が挿入されるとそのクエリはエラーとなって失敗するが、複数列インサートの場合は警告(warning)を発するものの、クエリは正常に受け付けられる。その際、NULL値が指定された各カラムにはそれぞれのカラムのデータ型の暗黙的なデフォルト値が挿入される。(数値型なら0、文字列型なら空文字''、etc…) MySQLにおけるNOT NULLカラムへのインサート時の挙動 - Sojiro’s Blog NOT NULL として宣言されているカラムへの NULL の挿入。複数行の IN…

EMR で Presto からクエリを投げてみる

AWS

…ive> CREATE DATABASE IF NOT EXISTS db01; hive> CREATE EXTERNAL TABLE … hive> クエリ実行 Presto からクエリを投げてみる $ presto-cli presto> use hive.db01; presto> クエリ実行 参考 EC2にHadoop/Hive/Presto突っ込んでS3にクエリ投げるまで - Qiita 8.39. USE — Presto 0.214 Documentation

Amazon Redshift と PostgreSQL の VACUUM FULL の動作の違い

AWS

…キー列に関する情報がクエリプランナーに渡され、プランナはこの情報を使用して、データのソート方法を利用するプランを構築します。ソートは、範囲が制限された述語を効率的に処理することができます。Amazon Redshift は、列データを 1 MB のディスクブロックに格納します。各ブロックの最小値と最大値がメタデータの一部として格納されます。範囲が制限された述語をクエリが使用する場合、クエリプロセッサは最小値と最大値を使用して、テーブルスキャン中に多数のブロックをすばやくスキッ…

Redshift のクエリ分析参考資料

AWS

クエリアラートの確認 - Amazon Redshift クエリプランの分析 - Amazon Redshift クエリ実行の分析 - Amazon Redshift クエリの概要の分析 - Amazon Redshift クエリパフォーマンスの向上 - Amazon Redshift クエリプラン - Amazon Redshift システムビュー - Amazon Redshift AWS Solutions Architect ブログ: Amazon Redshiftの…

NoDB: Efficient Query Execution on Raw Data Files

…データと一緒に一つのクエリーだ分析できるようになった。Redshift の成熟した実装を活かしつつ、分析対象データの範囲がS3まで広がった。 BDA305 NEW LAUNCH! Intro to Amazon Redshift Spectrum: Now query exabytes of data in S3 from Amazon Web Services BDA305 NEW LAUNCH! Intro to Amazon Redshift Spectrum: Now…

列指向データベースのページのデータ構造

…ージに格納している。クエリ実行時に結果セットを返す際に列別にバラバラのページに格納されているデータをどうやってタプル(レコード)に復元している*1のかと思ったがやはり行IDのようなものを持っているようだ。 行ID は C-Store では pid、MonetDB では BAT(Binary Association Tables) の oid と呼ばれている。 The Design and Implementation of Modern Column-Oriented Dat…

Amazon Redshift のプライマリキー

AWS

…あります。たとえば、クエリプランナーは特定の統計計算でプライマリキーと外部キーを使用して、サブクエリの非相関技術に影響を与える一意性および参照関係を推論したり、多数の結合を指示したり、冗長な結合を回避したりします。プランナはこれらのキーの関係を活用しますが、Amazon Redshift テーブルのすべてのキーがロード時に有効であることが前提となります。アプリケーションが無効な外部キーまたはプライマリキーを許可する場合、いくつかのクエリが不正な結果を返す可能性があります。たと…

Amazon Redshift を使ってみる

AWS

…plier 104 クエリパフォーマンスを計測する 1回目はコンパイル時間が含まれるため2回実行して2回目をとる。 -- Query 1 -- Restrictions on only one dimension. select sum(lo_extendedprice*lo_discount) as revenue from lineorder, dwdate where lo_orderdate = d_datekey and d_year = 1997 and lo_d…

「SQL性能を最大限に引き出すDB 12cクエリー・オプティマイザ」 @TechNight#7

…引き出すDB 12cクエリー・オプティマイザ 〜 新機能活用と統計情報運用の戦略 〜」というお題で発表しました。 内容 SQL性能を最大限に引き出すDB 12cクエリー・オプティマイザ 〜 新機能活用と統計情報運用の戦略 〜 柴田歩(id:gonsuke777)さん、畔勝で発表。 内容は Oracle DBA & Developer Day 2016 で発表しました - ablog とほぼ同じですが、DDD2016 の公開資料には含めていなかった12.2の変更点や各リリースで…

Oracle DBA & Developer Day 2016 で発表しました

…引き出すDB 12cクエリー・オプティマイザ 新機能活用と統計情報運用の戦略」 というお題で柴田歩さんと発表しました。 スライド Oracle DBA & Developer Day 2016のプレゼンテーション資料とセッションの収録動画 サマリ*1 大量データ処理を睨み、Oracle 7(1992) でコストベースオプティマイザ登場。 フィルタ条件・結合条件が多い集計クエリなど統計から正確なカーディナリティ見積が困難なケースに対応するためコストベースオプティマイザは継続的に…

書籍”Oracle の現場を効率化する100の技”の紹介

…6 SQLをパラレルクエリで高速化する方法 COLUMN アプリケーションによるパラレル化の注意点 7 大量レコードのINSERTを高速化する方法 8 SPMを使って実行計画を管理する COLUMN SQL計画管理とは 9 SPMアーキテクチャを理解する COLUMN SPMの登録方法 10 SPMを利用したハード解析の仕組みを理解する COLUMN SIGNATUREとPLAN_ID 11 SPMへ実行計画を登録する 12 SPMが利用できていることを確認する 13 SQL…

Perlワンライナー集

…小文字で書かれているクエリを対象外としたかったため、"i" 修飾子をつけていない。 perl -0777 -pe 's/\n(WITH|SELECT|INSERT|UPDATE|DELETE|\/\*\*).+?;//gs;s/(WITH|SELECT|INSERT|UPDATE|DELETE|\/\*\*).+?\n//g' perf_log.txt > perf_log_delete_query.txt マッチした行以降を表示する。 参考: perlです。パターンマッチし…

SQLチューニング原論(仮)

…─高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus) P.292 「賢いデータ構造と間抜けなコードのほうが、その逆よりずっとまし」 アルゴリズム(実行計画)は、適切なデータ(オブジェクト)構造、統計情報*1、SQL文があればクエリーオプティマイザ*2が最適なものを導出してくれる バージョン・パッチ、初期化パラメータ、データの実態(バージョンと初期化パラメータによる)なども実行計画に影響する 実行計画は変わらなくても、direct path read or…

InnoDB Deep Talk #1 に行ってきた

…にノードをまたがる)クエリを実行させないようにできないかといった質問というか要望を話されていた。 木村明治さん(キムラデービーブログ) twitter や OraTweet ではよくお世話になっているものの、お会いするのははじめて。 オプティマイザのことをわかりやすく説明された後に、以下の3冊を紹介されていました。Webエンジニアのための データベース技術[実践]入門 (Software Design plus)作者: 松信嘉範出版社/メーカー: 技術評論社発売日: 2012…

クエリ・オプティマイザによってビューを参照している SQL が書換えられているか確認する

…た。 検証ポイント クエリ・オプティマイザの Vew Merging によってSQL文が書換えられることを確認する。 検証シナリオ View Merging されるSQL文を実行し、クエリ・オプティマイザによってSQL文が書換えられることを確認する。 NO_MERGE ヒントを付与してを実行し、クエリ・オプティマイザによってがSQL文が書換えられないことを確認する。 確認には EVENT 10053 を使う。 検証結果 View Merging されるSQL文を実行し、クエリ…

索引ヘブン

…画を見ると、パラレルクエリーになっている。 初期化パラメータ PARALLEL_MAX_SERVERS を 0 に設定すると、シリアル化するが実行計画が他の環境と異なる。大きなパーティション表に TABLE ACCESS BY LOCAL INDEX ROWID でアクセスしてる。 原因 パーティション表のインデックスの統計情報が最新になっていない(last_analyzed の日時が古い)。 対処 問題になっているパーティション表のオプティマイザ統計情報を収集する。 SQL…

データベース・アーキテクト・サミット - askTom Live に行って来た

…て、フラッシュバッククエリーが使えるようになった。例えば、drop table した後もフラッシュバッククエリーで表を参照できる。フラッシュバックデータベースでデータベース全体を巻き戻さなくても DDL 変更前のデータを参照できるのは便利だな。 File Watchers DEFERRED_SEGMENT_CREATION Flash Cache Edition-based Redefinition askTom Live Q. ORA-600は素晴らしい機能だけれど、同じよ…

負荷テストについて基本的なメモ

…DBサーバなら秒間何クエリなど。重要なのは平均のトラフィックではなくピーク時のトラフィックを目標値に定めること。 レスポンスタイムひとつの処理に要する時間。Webアプリケーションならクリックしてから応答が返り、画面に表示されるまでの時間。パーセンタイル値が指標としてよく使われる。「95パーセンタイル値2秒」など。 ターンアラウンドタイムはレスポンスタイムと似ているが、レスポンスタイムが処理結果が出始めるまでの時間であるのに対して、ターンアラウンドタイムは処理結果が出割るまでの…

初期化パラメータ OPEN_CURSORS とはなんぞや?

…況が格納される(ワークエリアって感じか)。バインド変数を使ってコンパイル済みSQLを共有する場合、バインド変数は共有できないからプライベートSQL領域(カーソル)に格納されるってことか。ちょっとイメージがつかめてきた。 [参考] OPEN_CURSORS プロパティ 説明 パラメータ・タイプ 整数 デフォルト値 50 変更の可/不可 ALTER SYSTEM 値の範囲 0〜65535 基本/基本以外 基本 OPEN_CURSORSには、1つのセッションで同時にオープンできるカ…