skillup

技術ブログ

Database

データベース設計のアンチパターン リトライ+バッチ分割+バッチの再利用不可

投稿日:

リトライ

※OLTP=オンライントランザクションシステム(多数の端末から中央のデータベースにアクセスするタイプのシステム)

デメリット

リトライが繰り返し発生することによる負荷の増大。サーバー再起動以外で切り抜けられないことが多い。

対策

  • リトライ回数の上限設定
  • 負荷の考慮
  • タイムアウト制限時間の考慮

バッチ分割

デメリット

トランザクションが長すぎて、最後のほうでエラーになる。バッチが途中でエラーになったが中途半端にデータが更新されてしまっている。

対策

  • 処理分割をきっちり行う
  • 例外に対する認識を常に持っておく
  • バッチの適切な分割(基本的にはワントランザクションで対処したほうがいいが、長すぎるのも危険)。
  • 不用意なautocommitをしない
  • リソースの監視
  • 再実行のことを考えた分割にしておく

バッチ再利用不可

デメリット

エラーが発生しても失敗したところから再実行できない。バッチ中に初期化やクリアの処理が入っていない

対策

  • 例外に対する認識を必ず持っておく
  • 処理が正常に進んでいるか否か、プロセス的なログ、テーブルの用意
  • 適切な分割

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

複数GROUP BYでの注意

GROUP BYしたときに件数が増えるという現象があったので一応メモ。というか当たり前のことですが・・・ たとえば以下のようなテーブルがあったとします。 student id student_name …

no image

Webの高速化に関して

Webの高速化に関してメモ。 高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。 一応LAMP環境を前提にしてます。 Contents1 一番大事なのは測定2 DB対策3 フロント …

no image

Firebaseについて

前回Lambdaに少し触れましたが、2019年6月現在、サーバーレスなアプリというものが活況(?)のようです。 大規模なアプリというと Webサーバー+RDB+サーバーサイドプログラミング言語 が必須 …

no image

DBの構造について メモリとHDD

データベースについてまたまた学習中。 覚えておきたいポイントなど。 データを収めておくべき媒体では「記憶コスト(単位金額当たりの容量)」と「アクセス速度」の2つが重要なパラメータ メモリとHDDでは前 …

no image

SQL基礎 手続き型言語と集合思考の言語

どんな仕事でもそうだと思いますが、長年惰性で使っていると日常の作業はなんとかできてるけど、実は深く理解していない&効率のいいやり方を知らない、ということが結構あります。 私の場合、ちょっと前にCSSを …

アーカイブ