Oracle Unconference 松下 4/22
- 1. Oracle Unconference
シンプル・イズ・ベスト
シンプル イズ ベスト
~デフォルト機能を使い倒せ!~
デフォルト機能を使い倒せ!
株式会社 コーソル 1
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 2. Oracle Unconference
Ⅰ. 松下雅@コーソルって誰?
Ⅱ. システムの構成を考えよう
Ⅲ. 極力、シンプルなコードを
Ⅲ 極力 シンプルな ドを
Ⅳ.
Ⅳ デフォルトの設定って?
Ⅴ. Question & Answer
.
2
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 3. Oracle Unconference
Ⅰ. 松下雅@コーソルって誰?
Ⅱ. システムの構成を考えよう
Ⅲ. 極力、シンプルなコードを
Ⅲ 極力 シンプルな ドを
Ⅳ.
Ⅳ デフォルトの設定って?
Ⅴ. Question & Answer
.
3
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 4. Ⅰ.松下雅@コーソルって誰?
株式会社コーソル所属の技術屋
Oracle Supportとインフラが強み
Oracle Master所有率 96%
社員79名(2009/1/20現在)
色々やらせていただいてます
@ITへの寄稿
書籍執筆
執
4
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 5. Oracle Unconference
Ⅰ. 松下雅@コーソルって誰?
Ⅱ. システムの構成を考えよう
Ⅲ. 極力、シンプルなコードを
Ⅲ 極力 シンプルな ドを
Ⅳ.
Ⅳ デフォルトの設定って?
Ⅴ. Question & Answer
.
5
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 6. Ⅱ. システムの構成を考えよう
ここで言いたいことは
ここで言いたいことは・・・
さん しょう
ち ち
地産地消
※ 地域生産地域消費(ちいきせいさん・ちいきしょうひ)
の略語。地域で生産された農産物や水産物をその地域
で消費すること。by Wikipedia
6
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 7. Ⅱ. システムの構成を考えよう
極々一般的な構成
DB Serv. AP Serv.
User
Use
データを貯めて アプリを実行
おくサ
おくサーバ するサ
するサーバ
7
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 8. Ⅱ. システムの構成を考えよう
この構成のリソースは・・・?
DB S
Serv. AP S
Serv.
Network
8
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 9. Ⅱ. システムの構成を考えよう
100万件のテーブルから10件を検索する場合
仮に、AP Serv.でレコードを絞ろうとしたら・・・?
DB Serv.-AP Serv.間に、
100万件のデータが流れる
DB Serv. AP Serv.
9
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 10. Ⅱ. システムの構成を考えよう
100万件のテーブルから10件を検索する場合
では、DB Serv.でレコードを絞ったら・・・?
DB Serv.-AP Serv.間に
10件のデ タが流れる
10件のデータが流れる
DB Serv. AP Serv.
10
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 11. Ⅱ. システムの構成を考えよう
これは、SQLの ≪選択≫≪射影≫≪結合≫
全てにあてはまります。
≪選択≫ → 抽出条件は適切ですか?
句、 句
WHERE句、HAVING句
≪射影≫ → 必要なカラムに絞ったSQLですか?
SELECT * → AP S で絞 ていませんか?
Serv.で絞っていませんか?
≪結合≫ → 発行している複数のSQL文、
まとめることはできませんか?
11
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 12. Ⅱ. システムの構成を考えよう
アプリケーションを実行するサーバは AP Serv.
に間違いありません。が、そこで使用(表示)す
に間違いありません が そこで使用(表示)す
るデータの抽出は、DB Serv. で絞りこむと大分
エコになります。
DB Serv. AP Serv.
12
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 13. Oracle Unconference
Ⅰ. 松下雅@コーソルって誰?
Ⅱ. システムの構成を考えよう
Ⅲ. 極力、シンプルなコードを
Ⅲ 極力 シンプルな ドを
Ⅳ.
Ⅳ デフォルトの設定って?
Ⅴ. Question & Answer
.
13
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 14. Ⅲ. 極力、シンプルなコードを
ここで言いたいことは
ここで言いたいことは・・・
こ しん
おん ち
温故知新
※ 故き��温ねて新しきを知れば、以って師と為るべし。
by 語源由来辞典
14
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 15. Ⅲ. 極力、シンプルなコードを
cat <ファイル名> | sort | uniq
q
イル名
cat <ファイル名> | sort -u
sort -u <ファイル名>
15
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 16. Ⅲ. 極力、シンプルなコードを
パイプ、コマンドの動き
cat <ファイル名> | sort -u
u
プロセスA プロセスB
プロセスAとプロセスBは並行稼動
16
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 17. Ⅲ. 極力、シンプルなコードを
find . -maxdepth 1 -mtime +200 –exec rm {} ¥;
maxdepth mtime exec
find . -maxdepth 1 -mtime +200 | xargs rm
find . -maxdepth 1 -mtime +200 –exec rm {} +
17
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 18. Ⅲ. 極力、シンプルなコードを
find -exec、xargsの動き
見つけたファイルに対し、1行ずつ
find -exec ¥; 実行。複数回、同一のコマンドが実
実行 複数回 同一のコマンドが実
行される。
rm
rm
rm
rm
rm
rm
rm
rm
rm
18
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 19. Ⅲ. 極力、シンプルなコードを
find -exec、xargsの動き
標準入力で渡されたリテラルを、
xargs
引数の限界(ARG_MAX)まで1つの
引数の限界(ARG MAX)まで1つの
find -exec +
オプションとして実行。同一のコマンド
が、まとめて実行される。
rm
rm
19
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 20. Ⅲ. 極力、シンプルなコードを
補足
『find -exec +』 は、語尾が 『{} +』 で終わる必要があります。
(『ls』 や 『rm』 では使えるが、『mv』 や 『cp』 では使えない)
○ find . -maxdepth 1 -mtime +200 -exec rm {} +
× find . -maxdepth 1 -mtime +200 -exec mv {} backup +
p p
この先は、各コマンド(環境)依存です。※汎用的には厳しい。
(『mv』 や 『cp』 では、--target-directoryでクリア)
○ find . -maxdepth 1 -mtime +200 –exec mv --target-directory=backup {} +
maxdepth mtime exec target directory backup
※BSD find . -maxdepth 1 -mtime +200 | xargs -J mv {} backup
20
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 21. Ⅲ. 極力、シンプルなコードを
set timing on
declare
cursor c1 i select id,age from tbl_daityo;
is l t id f tbl d it
update tbl_daityo set kouza=kouza + 20000
r1 tbl_daityo%rowtype;
where age > 64 or age < 19;
begin
g
update tbl_daityo set kouza=kouza + 12000
for r1 in c1 loop
where age > 18 and age < 65;
if r1.age > 64 or r1.age < 19 then
update tbl_daityo set kouza = kouza + 20000
where id = r1.id;
else
update tbl_daityo set kouza = kouza + 12000
where id = r1.id;
end if
if;
update tbl_daityo
end loop;
set kouza=(case when age > 64 or age < 19 then kouza + 20000
commit;
else kouza + 12000
end; end); 21
/
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 22. Ⅲ. 極力、シンプルなコードを
PL/SQLエンジン、SQLエンジン
declare
cursor c1 is select id,age from tbl_daityo;
r1 tbl_daityo%rowtype;
SQL
begin
エンジン
f
for r1 in c1 loop
p
if r1.age > 64 or r1.age < 19 then
update tbl_daityo set kouza = kouza + 20000 where id = r1.id;
else
ls
PL/SQL
update tbl_daityo set kouza = kouza + 12000 where id = r1.id;
エンジン
end if;
end loop;
commit;
end;
22
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 23. Ⅲ. 極力、シンプルなコードを
チューニング案件でよく聞く言葉
「SQL を見せてください」
「インデックスは有効ですか?」
「実行計画に問題はないですか?」
「アナライズは最新ですか?」
declare
cursor c1 is select id,age from tbl_daityo;
r1 tbl_daityo%rowtype;
begin
for r1 in c1 loop
if r1.age > 64 or r1.age < 19 then
これ
update tbl daityo set kouza = kouza + 20000 where id = r1 id;
tbl_daityo r1.id;
else
update tbl_daityo set kouza = kouza + 12000 where id = r1.id;
end if;
end loop;
commit;
23
end;
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 24. Ⅲ. 極力、シンプルなコードを
是非、これも聞いて欲しい
「SQL は、どこからKickされますか?」
「トランザクション・フローを教えてください」
「トランザクション・フロ を教えてください」
「詳細設計書見せてください」 ※ やりすぎか・・・
※ 8.1.6 以降 SQL-92
SQL 92
CASE
※ 9i 以降
MERGE SQL:2003
※ 9i 以降 l 独自
Multi Table Insert
l i bl i Oracle独自
※ Bugにだけ、ご注意ください。。。
g
24
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 25. Oracle Unconference
Ⅰ. 松下雅@コーソルって誰?
Ⅱ. システムの構成を考えよう
Ⅲ. 極力、シンプルなコードを
Ⅲ 極力 シンプルな ドを
Ⅳ.
Ⅳ デフォルトの設定って?
Ⅴ. Question & Answer
.
25
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 26. Ⅳ. デフォルトの設定って?
インスタンス → memory_target ※11g 以降
降
※10g 以降
sga_target
sga target
データベース → AUTOEXTEND
26
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 27. Oracle Unconference
Ⅰ. 松下雅@コーソルって誰?
Ⅱ. システムの構成を考えよう
Ⅲ. 極力、シンプルなコードを
Ⅲ 極力 シンプルな ドを
Ⅳ.
Ⅳ デフォルトの設定って?
Ⅴ. Question & Answer
.
27
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved
- 28. Ⅴ 全体を通して
Question
&
Answer
28
Copyright (C) 2009 CO-Sol Inc. All Rights Reserved