SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
SQL大量発行処理を
いかにして高速化するか
若山 勝吾
2017. 09. 07
© Shogo Wakayama
はじめに
SQL大量発行に伴う処理遅延は、ミッションクリティ
カルシステムでありがちな性能問題のひとつです。
SQLをまとめて発行したり、処理の多重度を上げるこ
とができれば高速化可能です。ですが・・・
AP設計に起因する性能問題のため、開発工程の終盤
においては対処が難しいことが多々あります。
そのような状況において、どのような改善手段がある
のか、Oracleを例に解説します。
2
ループ処理で1件ずつ順次処理していくAPは、シンプルなため設計がしやすく、メモリ等のリソース使用量が
少なくて済むなどの理由から、レガシーシステムで用いられている傾向が多いです。
将来を見据えてシステムをリプレースする際に、そのような設計・実装をそのまま踏襲すると、クラウド環境
にみられるスケーラブルなサーバを利用しても、十分な性能が出ないという問題に直面しやすくなります。
自己紹介: 若山 勝吾
• ミッションクリティカルシステム専門
性能改善エンジニア
⇒ 性能試験と性能問題解決が得意です。
• 10年間、性能プロフェッショナルチームに所属
(50を超えるプロジェクトで実績を積む)
• Javaプロファイラ、性能モニタリングツール、
負荷生成ツールの開発・導入支援を経験
3
• SQL大量発行処理の改善方針
• SQL大量発行処理のチューニング10選
4
アジェンダ
ユーザ セッション
ありがちなSQL大量発行処理の例
5
バッチAPプロセス DBプロセス
実行スレッド
APサーバ DBサーバ
参照SQL ×N本
SQL実行
更新SQL ×N本
SQL実行
DBコネクション作成
DBコネクション切断
コミット
LOBデータ
アクセス
処理開始
終了
ユーザ セッション
遅い!
1件あたり6msで処理できたとしても、100万件の場合は100分かかる!
ループ処理で
1件ずつ実行
×100万件
テーブルA, B, Cから1レコードずつ
取得(PKアクセス)
テーブルC, Dに対して、1レコード
ずつ更新(PKアクセス)
テーブルCから取得したバイナリ
データを加工し、テーブルDに登録
文字列処理や
データ型変換など
ファイル操作など
(理想論)SQL大量発行処理の性能改善方針
【改善ポイント】
• 処理をまとめていない or まとめた際の効率が悪い
• 処理の多重度が足りない
【改善方針】
• ループ処理を廃止。複数レコードを一括処理する実装に変更
• 並列実行フレームワーク/分散処理技術を活用
しかし、開発工程の終盤では、まず現場は受け入れてくれない。
⇒AP修正/テストの期間が無い、デグレのリスクが高い、等。
6
限界スループットの算出式
限界スループット(処理件数/経過時間)
= 多重度/1件あたり処理時間(CPU時間+待機時間)
例) 1件あたり2秒かかる処理を6多重で実行した場合、
6多重/2秒 = 3件/秒
7
2秒 2秒
1件目
6多重
2秒 2秒
2件目 3件目 30件目
60秒経過
2秒 2秒 2秒 2秒
2秒 2秒 2秒 2秒
2秒 2秒 2秒 2秒
2秒 2秒 2秒 2秒
2秒 2秒 2秒 2秒
リトルの法則により、店内にいる顧客の平均的な数 L は、到着率 λ に 顧客が店内で過ごす平均時間 W を掛けたものになる。
「L = λ W」 ←→ 「λ = L / W」
<出典:待ち行列理論のリトルの法則 - Wikipedia>
https://ja.wikipedia.org/wiki/リトルの法則
スキマなく詰め込んでも、
60秒間で180件が限界
限界スループットを改善するには?
限界スループット(処理件数/経過時間)
= 多重度/1件あたり処理時間(CPU時間+待機時間)
• CPU時間・待機時間を減らす
– 高速なハードウェアを利用する
– 不必要な(冗長な)処理を省く
– I/O, 通信処理をまとめることで効率化する
• さらに多重度を上げる(ことができるようにする)
– 1多重あたりのリソース使用量を減らす ⇒CPU時間・待機時間を削減
– 多重実行時の競合を減らす ⇒待機時間を削減
8
限界スループットを改善するには?
限界スループット(処理件数/経過時間)
= 多重度/1件あたり処理時間(CPU時間+待機時間)
性能は「かけ算」。
たとえチリツモな改善しかできなくても・・・
1.2倍 × 1.2倍 × 1.2倍 × 1.2倍 = 2.07倍
9
CPU時間の削減効果
として、サーバCPU
に余裕ができたので
多重度UPできる!
チューニングに伴い
多重実行時の競合が
緩和されたことで、
多重度UPできる!
処理に不要なデータを省い
たり、AP側キャッシュ等で
SQL発行を抑止することで、
高速化!
データ加工や型変換
処理、SQL実行計画
をチューニングする
ことで、高速化!
※この数字は、あくまで改善効果のイメージ例です
(現実解)SQL大量発行処理の性能改善方針
【改善ポイント】
• CPU時間・待機時間の占める割合が大きい箇所を特定する
(調査するまでは改善ポイントは不明)
【改善方針】
• CPU時間・待機時間を可能な限り削減する
• 処理の多重度を可能な限り上げる
現場において、AP修正に伴う開発影響を配慮した、
シンプルな理論的アプローチ。(計測と分析を重視)
10
ユーザ セッション
SQL大量発行に伴う、様々なオーバーヘッド
11
バッチAPプロセス DBプロセス
実行スレッド
APサーバ DBサーバ
参照SQL ×N本
SQL実行
更新SQL ×N本
SQL実行
DBコネクション作成
DBコネクション切断
ループ処理で
1件ずつ実行
コミット
LOBデータ
アクセス
REDOログ同期書き込みに伴う
オーバーヘッド
ループ処理で1件ずつ取得すること
に伴うI/Oオーバーヘッド
※キャッシュヒット率が悪い場合
APーDB間のラウンドトリップ
に伴うオーバーヘッド
※LOBロケータを使ってOpen/
Read/Write/Closeを行うため
ユーザ セッション
APーDB間のラウンドトリップ
に伴うオーバーヘッド
ハードパースに伴うオーバーヘッド
※SQL文のリテラル値が変動する場合
ハードパースに伴うオーバーヘッド
※SQL文のリテラル値が変動する場合
更新ブロック競合や行ロック獲得
に伴うオーバーヘッド(待機時間)
※多重実行している場合
文字列処理や
データ型変換など
APーDB間のラウンドトリップ
に伴うオーバーヘッド
APーDB間のラウンドトリップ
に伴うオーバーヘッド
ファイル操作など
ユーザ セッション
各レイヤにおける処理時間の調査手段
※Oracle+Linux環境の場合
12
バッチAPプロセス DBプロセス
実行スレッド
APサーバ DBサーバ
参照SQL ×N本
SQL実行
更新SQL ×N本
SQL実行
DBコネクション作成
DBコネクション切断
コミット
LOBデータ
アクセス
ユーザ セッション
APーDB間のラウンドトリップ
に伴うオーバーヘッド
※LOBロケータを使ってOpen/
Read/Write/Closeを行うため
APーDB間のラウンドトリップ
に伴うオーバーヘッド
APーDB間のラウンドトリップ
に伴うオーバーヘッド
APーDB間のラウンドトリップ
に伴うオーバーヘッド
文字列処理や
データ型変換など
ファイル操作など
ループ処理で
1件ずつ実行
REDOログ同期書き込みに伴う
オーバーヘッド
ループ処理で1件ずつ取得すること
に伴うI/Oオーバーヘッド
※キャッシュヒット率が悪い場合
更新ブロック競合や行ロック獲得
に伴うオーバーヘッド(待機時間)
※多重実行している場合
・strace + lsof
※Oracle Javaの場合
FlightRecorderで
・V$SESS_TIME_MODEL
・V$SESSION_EVENT
・V$SQLSTATS
・SQL Trace
・/proc/PID/stat
・perf record
※Oracle Javaの場合
FlightRecorderで
調査
調査
調査
ハードパースに伴うオーバーヘッド
※SQL文のリテラル値が変動する場合
ハードパースに伴うオーバーヘッド
※SQL文のリテラル値が変動する場合
各レイヤにおける処理時間の調査手段(AP側)
※Linux(RHEL6以降)の場合
13
APプロセス - 実行スレッド
処理時間の調査手段 調査できること
/proc/PID/stat
※スレッドの場合は下記参照
/proc/PID/task/TID/stat
当該プロセス(スレッド)が要した時間内訳
・CPU時間(ユーザモード)の合計
・CPU時間(カーネルモード)の合計
・I/O待機時間の合計
perf record 当該プロセス(スレッド)のCPU時間内訳
・CPU時間(ユーザモード)を要している関数名, ライブラリ名
・CPU時間(カーネルモード)を要しているシステムコール名
・関数のコールグラフ(stack chain/backtrace)
strace + lsof 当該プロセス(スレッド)の外部で要した時間内訳
・I/O, 通信の応答時間
・I/O, 通信の対象(ファイル名, TCPポート等) ※lsof結果と突合
・I/O, 通信の量(バイト数)
・システムコール以外の時間(≒CPU時間(ユーザモード))
# プロセス内部で、CPU負荷の高い処理の調査 (関数ごとの%CPU, コールグラフ)
perf record -F 997 -g -o <出力ファイル名> -p <PID> sleep <計測時間[秒]>
perf report -v -n --showcpuutilization --stdio -i <出力したファイル名>
# プロセスの外部(システムコール)で待ちが生じている箇所の調査 ※strace実行前にlsofを取得
lsof -p <PID>
strace -f -ff -tt -T -v -x -s 256 -o <出力ファイル名> -p <PID>
Oracle Javaの場合、
FlightRecorderを使えば丸わかり
ここに時間がかかっている場合、
前後に実行されたシステムコール
を手がかりに、被疑処理を類推
各レイヤにおける処理時間の調査手段(DB側)
※Oracle(11g以降)の場合
14
処理時間の調査手段 調査できること
V$SESS_TIME_MODEL 当該セッションが要した時間内訳
・経過時間, CPU時間
・DBセッションの接続/切断に要した時間
・ハードパースに要した時間
・シーケンス番号取得に要した時間
・バインド変数(新値の)設定に要した時間
V$SESSION_EVENT 当該セッションが要した待機時間内訳
・待機イベント名
・待機時間(累計/平均/最大)
V$SQLSTATS 当該SQLが要した時間内訳
・SQL実行回数、取得レコード数
・ハードパース時間(平均)
・SQL実行時間の詳細
(ELAPSED_TIME, CPU_TIME, USER_IO_WAIT_TIME, CLUSTER_WAIT_TIME,
APPLICATION_WAIT_TIME, CONCURRENCY_WAIT_TIME)
SQL Trace 当該セッションのアクティビティ
・トレースを取得することで、時系列で色々わかる。
https://docs.oracle.com/cd/E16338_01/server.112/b56312/sqltrace.htm#i4640
DBプロセス - ユーザ セッション
特定AP処理に限定せずにシステム全体を分析する
場合は、AWR/STATSPACKレポートも有効。
SQLのElapsedTimeだけを
確認していても分からない
時間を確認できる
V$SQLではハードパース時間を
確認できないため、意外に貴重
• SQL大量発行処理の改善方針
• SQL大量発行処理のチューニング10選
15
アジェンダ
#1 SQL発行数の削減 その①
同じデータを頻繁にSELECTする場合
Oracle11g機能「クライアント結果キャッシュ」
・ほぼ更新されないテーブルに対して、繰り返し同データを参照する場合に効果的。
・AP修正ができない状況下において強力な機能。
16
最初のアプリケーション・セッションが問合せを実行すると、データベースから行が取得され、クライアントの結果キャッシュに
キャッシュされます。その他のアプリケーション・セッションが同じ問合せを実行する場合も、行はクライアントの結果キャッシュ
から取得されます。
<出典:Oracle Databaseパフォーマンス・チューニング・ガイド 11gR2>
https://docs.oracle.com/cd/E16338_01/server.112/b56312/memory.htm#BGBBIACC
2回目以降、クライアント側の
結果キャッシュから取得
※SQLをDBに発行しない
初回アクセス時、クライアント側
にSELECT結果をキャッシュ
#2 SQL発行数の削減 その②
空振りSQLが大量発行されている場合
従属テーブルの外部キー値をAP側に事前キャッシュしておき、
外部キーが存在しないSQLは発行しない実装にする。
・SQL発行回数は大量だが、1回あたりヒット件数がほぼ0に近い場合、効果的。
・対象APの前提として、他処理によってキー値が追加/削除されても影響がないこと。
17
レガシーシステムでは、RDBとは異なるDBデータ構造(階層型, ネットワーク型など)になっていることが多い。
RDBへシステムをリプレースする際に、旧DBデータ構造のRDB変換に伴い、ほとんどレコードが存在しない
従属テーブル(エンティティ)が発生しうる。
親
テーブル
従属(子)
テーブル
AP処理の例 テーブル構成(関係)
CUSTOMER_IDが「0001~9999」
を対象に、1件ずつ処理を実行
select … from テーブル名
where CUSTOMER_ID=xxxx
データ変換・加工・出力
ループ処理で
1件ずつ実行
1件ヒット
0件ヒット
0件ヒット0件ヒット
1件ヒット
AP側キャッシュに外部キー
が存在しない場合、SQLを
発行させない
#3 SQL発行数の削減 その③
SELECTの場合
複数テーブルへの単発SQLを、1SQLにまとめる。
※テーブル毎のレコード取得件数に注意。(件数差異がある場合は外部結合やunion allで対処)
18
【Before】
SELECT … from TBL_A where ID=1001;
SELECT … from TBL_B where ID=1001;
【After】
select … from TBL_A, TBL_B where TBL_A.ID=TBL_B.ID
and TBL_A.ID=1001 and TBL_B.ID=1001;
APーDB間のラウンドトリップ
オーバーヘッドが、SQL 1本分。
APーDB間のラウンドトリップ
オーバーヘッドが、SQL N本分。
念のため、SQL実行計画を確認すること。
テーブル結合方法がNestedLoop以外になっていたり、
結合したことでFull Scanが発生すると性能劣化に。
#4 SQL発行数の削減 その④
INSERTの場合
複数テーブルへの単発SQLを、1SQLにまとめる。(insert all)
19
【Before】
insert into TBL_A (ID, …) values (1002, …);
insert into TBL_B (ID, …) values (1002, …);
【After】
insert all
into TBL_A (ID, …) values (1002, …)
into TBL_B (ID, …) values (1002, …)
select * from dual;
APーDB間のラウンドトリップ
オーバーヘッドが、SQL N本分。
SQL実行計画
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 1 | 2 (0)| 00:00:01 |
| 1 | MULTI-TABLE INSERT | | | | |
| 2 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
| 3 | INTO | TBL_A | | | |
| 4 | INTO | TBL_B | | | |
--------------------------------------------------------------------------
APーDB間のラウンドトリップ
オーバーヘッドが、SQL 1本分。
SQL実行計画を確認すると、
マルチテーブル・インサート
になっていることがわかる。
#5 SQL発行数の削減 その⑤
複数DML(INSERT/UPDATE/DELETE)の場合
20
【Before】
INSERT …;
UPDATE …;
DELETE …;
【After】
BEGIN
INSERT …;
UPDATE …;
DELETE …;
END;
複数DMLによる更新SQLを、PL/SQLでまとめる。
※複雑なデータ加工や判定ロジックが必要な状況では、不向きな場合もある。
APーDB間のラウンドトリップ
オーバーヘッドが、SQL N本分。
APーDB間のラウンドトリップ
オーバーヘッドが、SQL 1本分。
#6 LOBオーバーヘッドの削減 その①
従来LOB(BASICFILE)を使用している場合
21
Oracle11g機能「SecureFiles」を使用する。※12cデフォルト
・AP修正不要で、LOB性能を大幅改善できる。
・Oracle10g以前からのバージョンアップの際に、是非利用したい機能。
<出典:津島博士のパフォーマンス講座 第28回 表圧縮とLOBデータ型について>
http://www.oracle.com/technetwork/jp/database/articles/tsushima/tsushima-28-1966240-ja.html
【従来LOB】 【SecureFiles】
SGA(メモリ内)で領域管理を行うことで、
オーバーヘッドが改善。
このほかにも、データ転送効率や容量効率
を高める様々な改良が施されている。
従来は、LOBセグメント領域の
管理をLOB索引で行っていた。
【Before】
INSERT INTO BLOB_TEST (COL_BLOB) VALUES (empty_blob())
RETURNING COL_BLOB INTO lob_locator;
DBMS_LOB.OPEN(lob_locator, DBMS_LOB.LOB_READWRITE);
DBMS_LOB.WRITE(lob_locator, 5, 1, utl_raw.cast_to_raw('ABCDE'));
DBMS_LOB.CLOSE(lob_locator);
#7 LOBオーバーヘッドの削減 その②
LOBWRITEの場合
22
【After】
INSERT INTO BLOB_TEST (COL_BLOB) VALUES (utl_raw.cast_to_raw('ABCDE'));
LOBロケータを使わずに、データ・インタフェースを使用する。
永続LOB用のデータ・インタフェースを使用するメリット
・逐次アクセス技法を使用するOCIアプリケーションの場合は、パフォーマンスが向上します。データ・インタフェースを使用してピース単位
のINSERTまたはフェッチを実行すると、OCILobRead2()やOCILobWrite2()などのOCI関数を使用する場合と同様のパフォーマンスが得られま
す。データ・インタフェースを使用すると、1回のOCIコールでLOBに4KBを超えるデータを挿入できるため、サーバーへのラウンドトリップ
を削減できます。
・最初にLOBロケータをフェッチしてからOCILobRead2()をコールするかわりに、1回のOCIStmtFetch()コールでLOBデータを読み取ることが
できます。これにより、LOBデータを最初から読み取る場合のパフォーマンスが向上します。
・配列のバインドおよび定義インタフェースを使用すると、LOBを含む複数の行を1回のラウンドトリップで挿入および選択できます。
<出典:Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド 11gR2 - 20 永続LOB用のデータ・インタフェース>
https://docs.oracle.com/cd/E16338_01/appdev.112/b56263/adlob_data_interface.htm
LOBロケータ操作に伴う
APーDB間のラウンドトリップが発生
直接データを登録することで、
ラウンドトリップを抑止
#8 LOBオーバーヘッドの削減 その③
LOBREADの場合
23
LOBデータを取得する際に、LOBロケータを使わずに、
ORACLE関数「cast_to_varchar2()」を使って直接取得する。
【Before】
select COL_BLOB, dbms_lob.getlength(COL_BLOB) into lob_locator, lob_len
from BLOB_TEST where ID=1;
DBMS_LOB.OPEN(lob_locator, DBMS_LOB.LOB_READONLY);
DBMS_LOB.READ(lob_locator, lob_len, 1, buffer);
DBMS_LOB.CLOSE(lob_locator);
【After】
select utl_raw.cast_to_varchar2(dbms_lob.substr(COL_BLOB, 2000, 1))
from BLOB_TEST;
直接データを取得することで、
ラウンドトリップを抑止
LOBロケータ操作に伴う、
APーDB間のラウンドトリップ
オーバーヘッドが発生。
varchar2型にあわせて
トリミング
#8 LOBオーバーヘッドの削減 その③
LOBREADの場合 (注意事項)
24
LOBデータを取得する際に、LOBロケータを使わずに、
ORACLE関数「cast_to_varchar2()」を使って直接取得する。
SQL> select * from nls_database_parameters where parameter like '%CHARACTERSET';
PARAMETER VALUE
------------------------------ --------------------
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET AL32UTF8
#export NLS_LANG='Japanese_Japan.AL32UTF8'
SQL> select utl_raw.cast_to_varchar2(dbms_lob.substr(COL_BLOB, 2000, 1)) from BLOB_TEST;
UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(COL_BLOB,2000,1))
--------------------------------------------------------------------------------
ABCDE
あいうえお
#export NLS_LANG='Japanese_Japan.JA16SJIS'
SQL> select utl_raw.cast_to_varchar2(dbms_lob.substr(COL_BLOB, 2000, 1)) from BLOB_TEST;
UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(COL_BLOB,2000,1))
--------------------------------------------------------------------------------
ABCDE
ヲィ
※環境変数「NLS_LANG」が
「NLS_CHARACTERSET」と合って
いないと、取得データが化ける。
VARCHAR2への変換時、そのVARCHAR2内の文字に対して現行のグローバリゼーション・サポート・キャラクタ・セットが使用されます。
<出典:Oracle Database PL/SQLパッケージおよびタイプ・リファレンス11gR2>
https://docs.oracle.com/cd/E16338_01/appdev.112/b56262/u_raw.htm#BABJFGBH
データ化け
#9 COMMITオーバーヘッドの削減
ループ処理で1件ごとにCOMMITしている場合
25
1件ごとにCOMMITせず、ある程度の処理単位で(例えば1万件ごと)
まとめる。
・ORACLE待機イベント「log file sync」が頻発している状況では効果的。
・COMMIT単位を数100万件などに大きくする場合、UNDO表領域の枯渇に注意。
・ORACLE待機イベント「enq: TX - row lock contention」の発生が見られる場合、
安易にCOMMIT単位を変更しないほうがよい。
2多重以上で処理している場合、同一レコードを同時更新する可能性があるAPでは、COMMIT単位をまとめる
ことで、行ロック競合確率がさらに高まる可能性がある。
※COMMITするまで行ロックを解除できないため、行ロック待機で遅延してしまう。
⇒ 行ロックが生じないよう事前に対象データを整理(実行スレッド毎に分割/ソート)しておくか、
COMMIT単位を大きくするのではなく、行ロックを掛けるトランザクション区間を短くするのも、
対応案としてあげられる。
#10 職人技チューニング
ヤスリがけの如く、非効率(冗長な)処理を削ぎ落とす。
【APロジック】
• ループ処理内で、毎回決まった結果になるロジック部分は、ループ処理
の外へ移動。
• 型変換や文字列処理は、メモリ操作に伴うCPU時間が発生するため、
最低限の型変換やキャッシュ活用を検討する。
(対策例として、日付文字列⇔Date型オブジェクトの変換では、キャッシュした
変換済みオブジェクトで代替、などの手段で重複排除を行えるか検討する)
【SQL】
• ElapsedTime(実行時間)の短縮だけでなく、多重実行時の競合緩和のため、
BufferGets(アクセスブロック数)の削減も意識する。
• ハードパース時間削減のため、「SQL文のバインド変数化」+「ヒント
句指定でSQL実行計画を固定化」することも有効。
26
使わない「列」を取得しないことで、
AP側の負担も減らすことが出来る。
おわりに
SQL大量発行に伴う処理遅延は、ミッションクリティ
カルシステムでありがちな性能問題のひとつです。
ミッションクリティカルシステムのリプレースの際は、
処理の並列実行や一括処理を意識して、AP設計の改良
を検討したいものです。
しかしながら、「現行AP設計を踏襲」の呪縛は、想像
以上に根強いかもしれません・・・
そのような状況において、本解説を参考に、対策を
練っていただければと思います。
27

Weitere ähnliche Inhalte

Was ist angesagt?

ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところY Watanabe
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveTokoroten Nakayama
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤Yu Otsubo
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法Kumazaki Hiroki
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)Mikiya Okuno
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話Yoshinori Matsunobu
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いota42y
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugItsuki Kuroda
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?ichirin2501
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 

Was ist angesagt? (20)

TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦いマイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 

Andere mochten auch

「Oracle Database + Java + Linux」 環境における性能問題の調査手法 ~ミッションクリティカルシステムの現場から~ Part.1
「Oracle Database + Java + Linux」環境における性能問題の調査手法 ~ミッションクリティカルシステムの現場から~ Part.1「Oracle Database + Java + Linux」環境における性能問題の調査手法 ~ミッションクリティカルシステムの現場から~ Part.1
「Oracle Database + Java + Linux」 環境における性能問題の調査手法 ~ミッションクリティカルシステムの現場から~ Part.1Shogo Wakayama
 
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...Insight Technology, Inc.
 
DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」
DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」
DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」Naotaka Shinogi
 

Andere mochten auch (7)

「Oracle Database + Java + Linux」 環境における性能問題の調査手法 ~ミッションクリティカルシステムの現場から~ Part.1
「Oracle Database + Java + Linux」環境における性能問題の調査手法 ~ミッションクリティカルシステムの現場から~ Part.1「Oracle Database + Java + Linux」環境における性能問題の調査手法 ~ミッションクリティカルシステムの現場から~ Part.1
「Oracle Database + Java + Linux」 環境における性能問題の調査手法 ~ミッションクリティカルシステムの現場から~ Part.1
 
HDFS basics from API perspective
HDFS basics from API perspectiveHDFS basics from API perspective
HDFS basics from API perspective
 
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
[db tech showcase Tokyo 2017] D33: Deep Learningや、Analyticsのワークロードを加速するには-Ten...
 
Apache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development statusApache Hadoop and YARN, current development status
Apache Hadoop and YARN, current development status
 
DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」
DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」
DB tech showcase Tokyo 2017「住民情報システムにおけるOracleStandardEditionでの取り組み」
 
(2017.9.7) Neo4jご紹介
(2017.9.7) Neo4jご紹介(2017.9.7) Neo4jご紹介
(2017.9.7) Neo4jご紹介
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 

Ähnlich wie SQL大量発行処理をいかにして高速化するか

とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)Kazuhiro Yoshikawa
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Noriyoshi Shinoda
 
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかSQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかyancya
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -歩 柴田
 
SQL Server replication overview (JP)
SQL Server replication overview (JP)SQL Server replication overview (JP)
SQL Server replication overview (JP)elanlilac
 
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返りOda Shinsuke
 
Sql server data store data access internals
Sql server data store data access internalsSql server data store data access internals
Sql server data store data access internalsMasayuki Ozawa
 
Sql server 2014 新機能の紹介
Sql server 2014 新機能の紹介Sql server 2014 新機能の紹介
Sql server 2014 新機能の紹介Oda Shinsuke
 
T sql 振り返り
T sql 振り返りT sql 振り返り
T sql 振り返りOda Shinsuke
 
Microsoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data WarehouseMicrosoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data WarehouseMicrosoft
 
db tech showcase 2019 D10 Oracle Database New Features
db tech showcase 2019 D10 Oracle Database New Featuresdb tech showcase 2019 D10 Oracle Database New Features
db tech showcase 2019 D10 Oracle Database New FeaturesNoriyoshi Shinoda
 
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyauroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyaKenichi Hoshi
 
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画keki3
 
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?Masayuki Ozawa
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪Yohei Azekatsu
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説Masahiko Sawada
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5Toshi Harada
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLakirahiguchi
 

Ähnlich wie SQL大量発行処理をいかにして高速化するか (20)

とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1
 
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかSQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
 
SQL Server replication overview (JP)
SQL Server replication overview (JP)SQL Server replication overview (JP)
SQL Server replication overview (JP)
 
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
 
Sql server data store data access internals
Sql server data store data access internalsSql server data store data access internals
Sql server data store data access internals
 
Sql server 2014 新機能の紹介
Sql server 2014 新機能の紹介Sql server 2014 新機能の紹介
Sql server 2014 新機能の紹介
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
T sql 振り返り
T sql 振り返りT sql 振り返り
T sql 振り返り
 
Microsoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data WarehouseMicrosoft Azure - SQL Data Warehouse
Microsoft Azure - SQL Data Warehouse
 
db tech showcase 2019 D10 Oracle Database New Features
db tech showcase 2019 D10 Oracle Database New Featuresdb tech showcase 2019 D10 Oracle Database New Features
db tech showcase 2019 D10 Oracle Database New Features
 
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoyauroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
uroboroSQLの紹介 (OSC2017 Nagoya) #oscnagoya
 
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
 
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪
 
PostgreSQL10徹底解説
PostgreSQL10徹底解説PostgreSQL10徹底解説
PostgreSQL10徹底解説
 
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 
MySQL SQL tuning
MySQL SQL tuningMySQL SQL tuning
MySQL SQL tuning
 

Kürzlich hochgeladen

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Kürzlich hochgeladen (7)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

SQL大量発行処理をいかにして高速化するか