Web design and hosting, database, cloud and social media solutions that deliver business results
  • ビジネスソリューション
    • データベースサービス
      • サーバーのアップグレードと DBA サービス
      • データウェアハウス サービス
      • データ統合
      • パワーBI
    • ウェブサイトデザイン
      • Web サイトのセキュリティ
      • Web サイトの最適化
      • ロゴデザイン
      • 支払いゲートウェイ
      • テクニカルツール
    • ビジネスサービス
      • Google クラウド サービス
      • アマゾン ウェブ サービス
      • マイクロソフト アズール
    • ソーシャルメディア
    • マイクロソフトオフィス
  • 学校
    • テスト環境
    • 学習データベース
      • 基礎
      • SQL Serverデータ
      • SQLServerのメンテナンス
      • SQL Serverの日付の使用
      • SQLServerピボットの使用-ピボット解除
      • SQLServer関数の使用
      • オープンクエリを取得
      • ツール
    • ウェブデザインを学ぶ
      • Ousia コンテンツ管理システムの構築
      • ASP-NET の使用
      • CSS の使用
      • JavaScript の使用
    • クラウドと IT サービスの学習
      • タスク スケジューラ エラー 2147943645
      • OpenSSL での SSL の要求と PFX ファイルの生成の簡単な手順
    • ソーシャル メディアの使用
      • Facebookアカウントを個人用からビジネス用に変更する
      • Google レビューを依頼する
      • ソーシャル メディアの取り組みをどこに集中させるかを選択する
      • ソーシャル メディアの画像サイズ
      • メタ データを使用してソーシャル メディア画像を設定する
  • 私たちに関しては
    • ブログ
      • Google コア アップデート 2020 年 1 月
      • インターネット上のウェブサイトに関する最も厄介なこと
      • ウェブサイトの広告リーフレットのコンテンツを選択する方法
      • エントリーレベルのゲーム機の構築
      • オンライン詐欺の防止
      • ギグエコノミーのスキマー
      • ホットチリインターネット閉鎖
      • 無料のベクター グラフィックスのトップ 5 Web サイト
    • キャリア
      • 翻訳者 英日
      • 英語-トルコ語翻訳者
    • チーム
      • アイセ・ハー
      • アリ アル アミン
      • ギャビン・クレイトン
      • サイガングー
      • スーリヤ・ムッカマラ
      • スニール・クマール
      • チェスターコッパーポット
    • ポートフォリオ
English (EN-US)English (EN-GB)Español (ES)हिंदी (HI)italiano (IT)日本語 (JA)

最小限のロックで大規模なデータ セットを更新、挿入、および削除する

SQL Server を使用して、ループを使用して最小限のロックで大規模なデータ セットを更新、挿入、および削除する

継続的にロックするシステムでより小さなトランザクションを使用する

SQL Server データの使用

特に大規模なデータ セットを操作する場合、ロックに問題が発生する可能性がありますが、このようにする必要はありません。可能であれば、トランザクションを細かく分割してください。

以下のコードの一部を見てみましょう。まず、SSMS と 3 つのクエリ ウィンドウ、およびアクティビティ モニターを開き、更新期間を 1 秒に設定します。

最初のウィンドウで、テストに使用するテーブルを作成できます。

これには実行に時間がかかり、いくつかのウィンドウを開く必要があります。

Create test table

CREATE TABLE (ID BIGINT IDENTITY(1,1) CONSTRAINT PK_ID PRIMARY KEY,GUID UNIQUEIDENTIFIER)CREATE INDEX IDX_GUID ON (GUID)

いくつかのレコードを作成する

このコードを実行し、コードを以下に置き換えます。これにより、500 万のランダム GUID が一度に 1 つずつテーブルに挿入されます。これにより、一定の更新と挿入がシミュレートされます。必要に応じて、これをさらに進めることができます。また、1000 行ごとに挿入されたレコード数も表示されるので、追跡できます。

SQL

SET NOCOUNT ONDECLARE @ID BIGINT=1WHILE @ID<5000000 BEGININSERT INTO (GUID) SELECT NEWID()IF @ID%1000=0 PRINT @IDSET @ID=@ID+1END

いくつかのレコードを選択

2 番目のウィンドウを開く場合は、以下のコードを追加します。これにより、20 で始まる 10000 レコードが選択されます。

SQL

SELECT TOP 10000 * FROM WHERE GUID Like '%20'

ループ削除

3 番目のウィンドウを開いて、以下のコードを実行すると、GUID をループして、0 で始まる場所を削除します。

SQL

WHILE EXISTS (SELECT TOP 1 * FROM WHERE GUID LIKE '0%') BEGINDELETE TOP (1000) FROM WHERE GUID LIKE '0%'END

Testing the theory

Once you get above 500000 records in your fist window, run either or both of the statements in windows two and three, and check your activity monitor for what happens.

You should see fewer locks, and the lock that you do get should be for shorter periods of time, not preventing users from carrying on doing the work they need to, although it may slow down to a certain extent.

Further Reading

Combine the code above with the automatic re-indexing, and it should keep your system in perfect working order.
SQL Server 2008 の完全なメンテナンス プラン

Author

Was this helpful?

Please note, this commenting system is still in final testing.
Copyright Claytabase Ltd 2020

Registered in England and Wales 08985867

RSSLoginLink クッキーポリシーサイトマップ

Social Media

facebook.com/Claytabaseinstagram.com/claytabase/twitter.com/Claytabaselinkedin.com/company/claytabase-ltd

Get in Touch

+442392064871info@claytabase.comClaytabase Ltd, Unit 3d, Rink Road Industrial Estate, PO33 2LT, United Kingdom
The settings on this site are set to allow all cookies. These can be changed on our Cookie Policy & Settings page.
By continuing to use this site you agree to the use of cookies.
Ousia Logo
Logout
Ousia CMS Loader