Home » スタッフBlog » パフォーマンスにおけるボトルネック解消

パフォーマンスにおけるボトルネック解消

category : スタッフBlog 2016.3.2 

画像1

技術部の本橋です。

私が設計・開発をする上で意識している事は多々ありますが、
その中でも割と重要なパフォーマンスについてご紹介させていただきます。

パフォーマンスと一言でいっても様々な種類があります。
その中で最も優先しているものは、【処理速度】です。

CPU・メモリ・SSDなど、単純にハードスペックを上げれば良いのですが、
そう簡単に予算が出れば苦労しませんよね。

では、設計時に考慮している2点を挙げます。
 1・ジョブの中でメモリに対するディスクI/Oを減らす
 2・並列処理の効率を意識する

 ディスクI/Oとは、主記憶装置(MEMORY)から外部記憶装置(HDDなど)に対して
 IN(READ)/OUT(WRITE)する部分の事です。
 つまり、HDDなどからのデータ読み書きに時間が掛かっています。

例えば、DataBaseの2つのテーブルに対するSQLの結合文があります。
 TABLE_AとTABLE_Bからそれぞれデータを抽出し結合する という処理があった場合
 1回のSQL文で処理をする事があると思います。

 しかし、JOIN処理は大変重たいものです。
 データ件数によっては何十分とかかるでしょう。

 そんなとき、まずはそれぞれTABLE_AとTABLE_Bのデータ抽出のみを行い、
 WORK_A、WORK_Bテーブルにそれぞれ出力
 その後、各WORKテーブルからJOINをする。
 すると、JOIN処理に掛かるディスクI/Oは減り、JOIN処理は早くなります。

 次に、もう一つの考慮点を使います。
 WORK_AとWORK_Bを作る処理を並列化することで処理効率を向上させます。

画像2

いかがでしょうか?
もちろん、データ件数や環境などによって結果は変わってきます。
なので、将来の件数を見越したデータ量で技術検証を取る必要がありますが
このようなやり方が絶大な効果を生む場合もあるのです。

パフォーマンスを出す事は観点が多く、とても難しいですが
どこにボトルネックがあるのかを調査していけば、自ずと答えはでると思っています。

タグ

サイト内検索

Copyright(c) 2016 IT-TERA All Rights Reserved.