質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

5回答

2469閲覧

SQL Serverで約120万件のログテーブルを作成したいのですが...

退会済みユーザー

退会済みユーザー

総合スコア0

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

1クリップ

投稿2019/02/20 00:51

SQL Serverにてログテーブルを作成したいと考えています。
環境がすこしややこしいので、先に環境や作成条件を記述します。


既存のシステム、DBがありそのシステム自体ログは一応落ちます。
しかし、既存システムのログは不必要なログも落ちてしまいます。また、最大でも180日しかログを保持しません。
そこで今回、新しくテーブルを作成し、必要なログだけを残しつつ、最低でも3年間分のログを保持するテーブルを作成しようと思っています。

必要なログだけを残した場合、1年間で約3040万件、3年間で90120万件のデータになります。
テーブルの構造は
.smalint
.smalint
.datetime
.smalint
.smalint
.nvarchar(25)
.nvarchar(3)
.smalint
.nvarchar(25)
.smalint
.nvarchar(25)
.smalint
.nvarchar(41)
.nvarchar(17)
.nvarchar(3)  です。


ここで分からないことがありあます。
・約120万件のデータを1つのテーブルにしてパフォーマンスに支障が出たりはしないのか?
ということです。
もし、全く問題ないのであれば、5年間くらいはログを保持していたいと考えています。
DBを扱うのはほぼ初心者です。拙い質問でスミマセン。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/20 01:22 編集

> 約120万件のデータを1つのテーブルにしてパフォーマンスに支障が出たりはしないのか? 保持するレコード数自体は何の問題もないが、「パフォーマンス」は使い方によるので、質問者さんの使い方が分からない第三者には何とも言えないと思います。(そのぐらいなら多分大丈夫じゃないの・・・と言うような無責任なことは言えますが) 無償試用版が入手できるはずなので、それで実際に試してみてはいかがですか?
guest

回答5

0

約120万件のデータを1つのテーブルにしてパフォーマンスに支障が出たりはしないのか?

保持するレコード数自体は何の問題もないが、「パフォーマンス」は使い方によるので、質問者さんの使い方が分からない第三者には何とも言えないと思います。(そのぐらいなら多分大丈夫じゃないの・・・と言うような無責任なことは言えますが)

無償試用版が入手できるはずなので、それで実際に試してみてはいかがですか?

#間違えてコメント蘭に書いたのをここ回答欄に移しました。

投稿2019/02/20 01:24

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/20 01:46

わざわざありがとうございます。 実際の利用方法としては、定期的なバッジ等でログデータをテーブルに保存。 月に1回程度、ログデータの閲覧、印刷出力する程度です。 クライアントも1台と決まっているので、パフォーマンスに問題はないと考えます。 ありがとうございました。
guest

0

・約120万件のデータを1つのテーブルにしてパフォーマンスに支障が出たりはしないのか?

確実なのはベンチマークを行う事です。

一概にパフォーマンスと言ってもそのログデータに対する要件がどのようなものかによって変わります。
ログデータを参照するならインデックスが必要で、インデックスの有無によって更新時のパフォーマンスは変わります。

大量データに関してはパーティショニングを検討するのが一般的です。
パーティション テーブルとパーティション インデックス

投稿2019/02/20 01:19

sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/20 01:50

そうですね。 とりあえず、一つのテーブルに対し100万件越えのデータを入れても大丈夫そうなので、一度テストテーブルを作ってからベンチマーク等を行ってみます。 ありがとうございました。
guest

0

大抵のDBエンジンであれば100万件超えのデータ数は想定内です
ただしデータファイルのサイズが極端におおきくなると
ファイルI/Oがボトルネックになることもあるので
それなりの対応が必要になる場合もあります

投稿2019/02/20 01:15

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/20 01:49

>>大抵のDBエンジンであれば100万件越えのデータ数は想定内です DBの知識が浅く、こういった情報がとても参考になります。 ありがとうございました。
guest

0

ベストアンサー

利用のしかた次第です。
バッチでログ保存用テーブルに移して、保存したログを時々見に行く程度なら、
全体のパフォーマンスには殆ど影響はありません

投稿2019/02/20 01:14

編集2019/02/20 01:16
hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/20 01:42

実際の利用としては正にこの通りです。 しかもクライアントは1台なのでほぼ影響なしと考えます。 ありがとうございました。
guest

0

レコード件数が1億件を超えると大きいな。まともにテーブル設計しようと考えますが、100万件くらいのテーブルはザラです。
月次処理でいろいろなことをやって時間がかかりそうなら、ログ・テーブルを年月毎にパーティション に分割することはよくあります。月次処理で1ヶ月分のデータを削除する時、パーティションを使う場合と使わない場合を試してみると良いかも?

投稿2019/02/20 02:45

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問