[解決済み】SQL Serverで画像を保存する?
質問
私は小さなデモサイトを作り、その中でSQLサーバーの画像カラムに画像を保存しています。いくつかの質問があります...
-
これってダメなんでしょうか?
-
サイトが大きくなったとき、パフォーマンスに影響がありますか?
画像をディスクに保存して、データベースには画像への参照だけを保存するという方法もあります。これは多くの人が経験したことのある共通のジレンマに違いありません。何かアドバイスがあれば歓迎しますし、実際、できることなら失敗を少なくしたいと思っています。
解決方法は?
マイクロソフト・リサーチが発表した論文に ブロブ化するかしないか .
多くの性能テストと分析を行った彼らの結論はこうだ。
-
写真やドキュメントのサイズが通常256KB以下の場合、データベースのVARBINARYカラムに格納する方が効率的です。
-
写真や文書が通常1MB以上ある場合は、ファイルシステムに格納する方が効率的です(SQL Server 2008のFILESTREAM属性により、それらはまだトランザクション制御下にあり、データベースの一部となります)。
-
この2つの間で、用途によって使い分けが必要です。
もし写真をSQL Serverのテーブルに入れることに決めたら、その写真を保存するために別のテーブルを使うことを強くお勧めします。従業員の写真を従業員テーブルに保存しないで、別のテーブルに保存してください。そうすれば、Employeeテーブルは無駄がなく、非常に効率的で、クエリの一部として社員の写真も選択する必要がなくなるからです。
ファイルグループについては、以下を参照してください。 ファイルとファイルグループのアーキテクチャ をご覧ください。基本的には、最初から大きなデータ構造のために別のファイルグループを使ってデータベースを作成するか、後からファイルグループを追加するかのどちらかになります。これを「LARGE_DATA」と呼ぶことにします。
これで、VARCHAR(MAX) または VARBINARY(MAX) カラムを格納する必要がある新しいテーブルを作成するときはいつでも、このファイルグループをラージデータ用に指定することができるようになります。
CREATE TABLE dbo.YourTable
(....... define the fields here ......)
ON Data -- the basic "Data" filegroup for the regular data
TEXTIMAGE_ON LARGE_DATA -- the filegroup for large chunks of data
ファイルグループに関するMSDNイントロをチェックして、遊んでみてください。
関連
-
[解決済み] SQL Agent を使用して SSIS パッケージを実行する際の問題 - "DTSER_FAILURE(1)" で失敗します。
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQL Server MS 2012の現在のセキュリティコンテキストでは、サーバープリンシパルはデータベースにアクセスできません。
-
[解決済み] パーセント値を保持するための適切なデータ型?
-
[解決済み] 階層テーブルの設計
-
[解決済み] SSISの日付と時刻の連結
-
[解決済み] UPDATEエラーです。"REPLACEの引数1の引数データ型textは無効です"
-
[解決済み] データベースとスキーマの違い
-
[解決済み] 文字列から特定の文字を削除する
-
[解決済み] 日付から年内の週番号を取得する
-
[解決済み] SQL Serverでマテリアライズド・ビューを作成する方法は?
-
[解決済み] SQL Serverは、ビュークエリでLEFT JOINをLEFT OUTER JOINに置き換えます。