More Related Content Similar to RDB入門 ~アプリケーション開発者が陥りやすいDB開発の落とし穴~
Similar to RDB入門 ~アプリケーション開発者が陥りやすいDB開発の落とし穴~ (20) RDB入門 ~アプリケーション開発者が陥りやすいDB開発の落とし穴~4. ケーススタディ1
システムが止まった その原因は
ある処理がトランザクション分離レベルをRead
Committedに設定
このシステムではRead Uncommittedが前提
マルチスレッドプログラムでコネクション・プーリン
グを使用
後続の読み込み処理にRead Committedに設定さ
れたスレッドが割り当てられた
実行中のトランザクションによってブロック
画面遷移が出来なくなり、Commitに辿りつけず操
作不能に…
Developers Summit 2010
6. ケーススタディ1
システムが止まった その原因は
処理2で更新中のデータ
をSelectしようとしてブロ
Selectだけなのでトラン
ReadCommittedで処理
ックされた
スタート
ザクションをかけずに処
理スタート
処理3
処理1 コネクション1
SQL Anywhere
データベース
処理2 コネクション2
コネクションプール
Read Uncommittedで
トランザクションスタート
Developers Summit 2010
8. ケーススタディ1
トランザクション分離レベルとは
RDBMSによって実装の仕方が違う
ANSI/ISO SQL標準
Oracleではこのケースは発生しない
読み取り一貫性
SQL Server、SQL Anywhere等では新しい分離レ
ベルを用意
スナップショット分離レベル(読み取り一貫性の実現)
トランザクション開始時にスナップショットを取るため、
ディスクの空き容量に注意
状況に応じて使い分けることを推奨
Developers Summit 2010
10. ケーススタディ2
プログラムのパフォーマンスがでない
ログを分析してみると
カラムごとに集計のSQLが実行されていた
SELECT COUNT(*) AS CNT FROM tab01
WHERE nen = ‘2003’ AND tsuki = 1
12月 15 14
11月 12 15 14 12 15 10 3
10月 30 10 3 30 10 3 6
9月 20 3 6 12 15 20 3 6
8月 5 1 30 10 5 1
7月 12 15 14 3 6 10 15 20
6月 30 10 3 1 8 10 16
5月 12 15 14 6 15 14 1 15 14
4月 30 10 3 10 3 6 10 3
3月 20 3 6 20 3 6 3 6
2月 5 1 5 1
1月 15 10 3 1
2002 2003 2004 2005 2006 2007 2008 2009 2010
Developers Summit 2010
11. ケーススタディ2
プログラムのパフォーマンスがでない
列単位に集計するように修正
SELECT nen,tsuki,COUNT(*) AS CNT FROM tab01
WHERE nen = 2003
group by tsuki,nen
order by tsuki,nen
12月 15 14
11月 12 15 14 12 15 10 3
10月 30 10 3 30 10 3 6
9月 20 3 6 12 15 20 3 6
8月 5 1 30 10 5 1
7月 12 15 14 3 6 10 15 20
6月 30 10 3 1 8 10 16
5月 12 15 14 6 15 14 1 15 14
4月 30 10 3 10 3 6 10 3
3月 20 3 6 20 3 6 3 6
2月 5 1 5 1
1月 15 10 3 1
2002 2003 2004 2005 2006 2007 2008 2009 2010
Developers Summit 2010
12. ケーススタディ2
プログラムのパフォーマンスがでない
全体を一度に集計するように修正
SELECT nen,tsuki,COUNT(*) AS CNT FROM tab01
group by nen,tsuki
order by nen,tsuki
12月 15 14
11月 12 15 14 12 15 10 3
10月 30 10 3 30 10 3 6
9月 20 3 6 12 15 20 3 6
8月 5 1 30 10 5 1
7月 12 15 14 3 6 10 15 20
6月 30 10 3 1 8 10 16
5月 12 15 14 6 15 14 1 15 14
4月 30 10 3 10 3 6 10 3
3月 20 3 6 20 3 6 3 6
2月 5 1 5 1
1月 15 10 3 1
2002 2003 2004 2005 2006 2007 2008 2009 2010
Developers Summit 2010
15. ケーススタディ3
Viewを使っているのだがパフォーマンスがでない
Viewを使ってパフォーマンスがでない簡単な例
以下のようなViewを作成
create view View_sum as
select region ,sum(quantity) as qty from orders
group by region
以下のようなselect文を実行
select region,qty from View_sum where region = ‘West’
viewが評価された後にwhere条件で抽出されるため、
orderテーブルは全件集約される
Developers Summit 2010
18. ケーススタディ3
Viewを使っているのだがパフォーマンスがでない
マテリアライズド・ビューのデモ
約25万件の売り上げ明細データから特定月の担当者別・日別
の売り上げ金額・数量の集計を求める
SELECT employees.surname, employees.givenname, CREATE MATERIALIZED VIEW demo AS
salesorders.orderdate, SELECT employees.surname, employees.givenname,
SUM(products.unitprice * salesorders.orderdate,
salesorderitems.quantity) AS TotalSales, SUM(products.unitprice *
SUM(salesorderitems.quantity) AS NumberOfSales salesorderitems.quantity) AS TotalSales,
FROM (((salesorders JOIN employees ON SUM(salesorderitems.quantity) AS NumberOfSales
salesorders.salesrepresentative = FROM (((salesorders JOIN employees ON
employees.employeeid) JOIN salesorderitems ON salesorders.salesrepresentative =
salesorders.id = salesorderitems.id) JOIN employees.employeeid ) JOIN salesorderitems ON
products ON products.id = salesorders.id = salesorderitems.id) JOIN
salesorderitems.productid) products ON products.id =
WHERE YEAR(orderdate) = 2001 AND MONTH(orderdate) = 7 salesorderitems.productid)
GROUP BY employees.surname, GROUP BY employees.surname,
employees.givenname, salesorders.orderdate; employees.givenname,salesorders.orderdate;
Developers Summit 2010
22. SQL Anywhere の概要
製品基本コンセプト
省リソースで管理者不要なデータベースと分散環境の統合、既存システム
との連携ソリューションを提供する包括的なパッケージ製品です
省リソースで稼動 マルチCPU、64bit(X64)に対応 容易なデータ移行
ハード投資を抑える
Windows XP Windows サーバ
ノートPCなどでも軽快に動作。 規 容易な Vista
WMもサポート。 初 最小限の投資 模 規模拡張
期 拡
容易なインストール 投 業務拡大への 張 Windows Mobile Linux サーバ
資 迅速な対応 ・ データベースをファイルコピーの
・ デ
設定要員コスト削減 運 既存資産の ー
みで移行可能。使用していたデ
ータをそのまま移行できます。
用 有効活用 タ
モジュールはCD-ROM1枚で。 コ 連 データ移行が容易
既存DBとのデータ同期
複雑な設定なしで自動インストー ス
ル可能
ト 携
管理の自動化 削 が
減 容 既存データ 既存データベース
易 活用・連携
運用コスト削減
エンタープライズ
クエリ自動学習機能や自動リカ
バリ機能により、データベースメ 既存DB、ORACLEやSQL Server
中堅・中小企業システム IBM DB2などとデータ同期可能。
ンテナンスの必要性を極力排除
既存データを活用できます。
モバイル パッケージ組み込み
22 – Copyright © 2010 iAnywhere Solutions K.K.
23. SQL Anywhereの概要
ビジネス要件の拡張への対応
8U
分散DB環境をデータ同期によりデータ統合
データ同期を使い、モバイル
Mobile Link システムへと拡張
DBファイルのコピーでバックアップ、復
旧や移行可能
Windows Server OS(32bit/64bit),Linux
サーバエンジン やWMにも対応 Linux
既存PC等の低スペック(RAM256M)で
も稼動
自動チューニング/自動リカバリ BlackBerry
テーブル/カラム、通信の暗号化 Windows
Mobile
対応 Windows
スタンドアロン エンジン
モバイル
23 – Copyright © 2010 iAnywhere Solutions K.K.
24. SQL Anywhereの概要
ビジネス要件の拡張への対応
基本コンセプトに加え、データ量増大やユーザ数増加などビジネス要件
の拡張に伴い、さらに処理効率を向上させる機能を実装
パフォーマンス 開発・運用
マテリアライズド・ビュー Visual Studio への統合
規
スナップショット・ 初 最小限の投資 模 充実した統合管理・分析Tool
アイソレーション 期 拡
投 業務拡大への 配布インストーラ作成Tool
張
パラレル・クエリ 資 迅速な対応 ・
・ デ など
運 既存資産の ー
など 用 有効活用 タ
データ管理 コ
ス 連 データ同期・統合
ト 携
高可用性オプション 削 が 容易なデータ同期設定
減 容
柔軟なデータ暗号化 易 Text等その他データソース
など 同期用API
メッセージング、Webサービス
とのインターフェイス
24 – Copyright © 2010 iAnywhere Solutions K.K.
など
25. その他 各種情報
– アイエニウェア・ソリューションズ株式会社ホームページ
http://www.ianywhere.jp
製品情報
http://www.ianywhere.jp/prd/index.html
弊社ソリューション情報
http://www.ianywhere.jp/sol/index.html
25 – Copyright © 2010 iAnywhere Solutions K.K.
26. その他 各種情報
・アイエニウェア・ソリューションズ デベロッパー・コミュニティ
http://www.ianywhere.jp/developers/index.html
- SQL Anywhere Developer Edition
SQL Anywhere の開発者バージョンが
ダウンロードできます。
開発者バージョンは、ユーザ登録のみで、開発用途限定で日数制限無く製品版と
同様の機能をご利用いただけます。
- 開発者向けニュースグループ
弊社製品をご利用頂く中で、製品に関するご質問についてはニュースグループを
ご活用ください。弊社エンジニアも時間の許す限り、支援いたしております。
26 – Copyright © 2010 iAnywhere Solutions K.K.