タグ付けされた質問 「data-pages」

2
SQL Serverに使用可能な物理メモリが残っていない場合はどうなりますか?
グーグル検索中に、矛盾する情報を見つけました。 一部のサイトでは、データ用の物理メモリが残っていない場合、SQL Serverは既存のデータをTEMPDBに移動すると述べています(SQL Server:TempDbの説明と推奨事項を参照)。 しかし、他のサイトでは、十分な物理メモリが残っていない場合、オペレーティングシステムがPAGE FILEを使用して物理メモリからデータをそこに移動できると述べています(SQL Serverのページファイルを参照)。 SQL Serverが物理メモリを使い果たしたときにデータを書き込む場所はどこでしょうか?tempdbまたはOSページファイルに?それとも両方とも?

1
ctidをページ番号と行番号に分解するにはどうすればよいですか?
テーブルの各行には、行の物理的な場所を表すタイプのシステム列が ctidありますtid。 create table t(id serial); insert into t default values; insert into t default values; select ctid , id from t; ctid | id :---- | -: (0,1)| 1 (0,2)| 2 ここに dbfiddle ctid最も適切なタイプ(例えばinteger、bigintまたはnumeric(1000,0))からページ番号だけを取得する最良の方法は何ですか? 私は考えることができる唯一の方法は非常に醜いです。

1
SQL Serverの圧縮インデックスは、データ圧縮を指定せずに再構築時に圧縮されたままですか?
ページ圧縮(ALTER INDEX IX1 REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE))を使用してSQL Serverインデックスを再構築した後、(特定の断片化しきい値を超えた一部のメンテナンススクリプトで行われるように)その後の再構築では、データ圧縮を再度指定する必要がありますか?そうでなければ、インデックスは効果的に圧縮解除されますか?

3
SQL Serverの8 KByteデータページから512バイトが使用されていません
次の表を作成しました。 CREATE TABLE dbo.TestStructure ( id INT NOT NULL, filler1 CHAR(36) NOT NULL, filler2 CHAR(216) NOT NULL ); 次に、クラスター化インデックスを作成しました。 CREATE CLUSTERED INDEX idx_cl_id ON dbo.TestStructure(id); 次に、各サイズが256バイトである30行(テーブル宣言に基づいて)を入力しました。 DECLARE @i AS int = 0; WHILE @i < 30 BEGIN SET @i = @i + 1; INSERT INTO dbo.TestStructure (id, filler1, filler2) VALUES …

1
スロット配列と総ページサイズ
以下に示すように、多くのフォーラムや多くのブログでページが構成されていることを読み続けています。ページサイズ:16 x 512B = 8192Bページヘッダー:= 96B最大行数行:= 8060B これにより、(8192-96-8060)B = 36Bになります。 わかりました、これは論理的で正しいです。私の質問はこれです。なぜ多くの人が、残りの36Bがスロットアレイ用に予約されていると言うのですか 明らかに、スロット配列はページの行ごとに2Bを提供します。そのため、最小2B、最大1472Bになります。 2B:1行* 2B = 2B 1472B:8096B = n * 9B(オーバーヘッドを伴う最小行サイズ...単一のTINYINT列を考えてください)+ n * 2B(行ごとのスロット配列コスト)=> 8096 = 11n => n = 8096/11 = 736 736 * 2B = 1472B。 14Bバージョンタグにより、これで20になります。 USE master ; GO CREATE DATABASE test ; GO USE test …

1
SQL Server-クラスター化インデックスを使用する場合のデータページの保存方法
最近、クラスター化インデックスのデータページが連続して格納されていないことを聞きました。これは本当ですか? おそらく、データページは通常、規則のいくつかの例外を除いて連続して格納されていますか?または、間違っていると聞き、データページが常に連続して保存されている可能性があります。 どうもありがとう。

2
DATALENGTHの合計がsys.allocation_unitsのテーブルサイズと一致しません
DATALENGTH()テーブル内のすべてのレコードのすべてのフィールドを合計すると、テーブルの合計サイズが得られるという印象を受けました。私は間違っていますか? SELECT SUM(DATALENGTH(Field1)) + SUM(DATALENGTH(Field2)) + SUM(DATALENGTH(Field3)) TotalSizeInBytes FROM SomeTable WHERE X, Y, and Z are true 以下のクエリを使用して(オンラインから取得してテーブルサイズ、クラスター化インデックスのみを取得し、NCインデックスは含まない)、データベース内の特定のテーブルのサイズを取得しました。請求のために(部門に使用するスペースの量に応じて部門に請求します)、この表で各部門が使用したスペースの量を把握する必要があります。テーブル内の各グループを識別するクエリがあります。各グループがどれだけのスペースを使用しているかを知る必要があります。 1行あたりのスペースVARCHAR(MAX)は、テーブル内のフィールドが原因で大きく変動する可能性があるため、平均サイズ*部門の行の比率を取得することはできません。DATALENGTH()上記のアプローチを使用すると、以下のクエリで使用される合計スペースの85%しか取得できません。考え? SELECT s.Name AS SchemaName, t.NAME AS TableName, p.rows AS RowCounts, (SUM(a.total_pages) * 8)/1024 AS TotalSpaceMB, (SUM(a.used_pages) * 8)/1024 AS UsedSpaceMB, ((SUM(a.total_pages) - SUM(a.used_pages)) * 8)/1024 AS UnusedSpaceMB FROM sys.tables t with …

2
セカンダリデータファイルを削除しています。DBCC SHRINKFILE:作業テーブルページであるため、ページを移動できませんでした
に対して作成したセカンダリデータファイル(.ndf)が多すぎますtempdb。余分なファイルを削除するには、ファイルを空にする必要があります(コンテンツは他のファイルに移動されます)。 DBCC SHRINKFILE('tempdbfile8', EMPTYFILE); 次にファイルを削除します。 ALTER DATABASE tempdb REMOVE FILE tempdbfile8; しかし、EMPTYFILEコマンドはエラーを返します: DBCC SHRINKFILE: Page 8:41920 could not be moved because it is a work table page. Msg 2555, Level 16, State 1, Line 2 Cannot move all contents of file "tempdbfile8" to other places to complete the emptyfile operation. …

1
ページ圧縮を使用する場合の行オーバーヘッドは何ですか?
650 Numeric(19,4)列のテーブルを作成しました。実行してページ圧縮をオンにすると ALTER TABLE fct.MyTable REBUILD WITH (DATA_COMPRESSION = PAGE); 私は得る メッセージ1975、レベル16、状態1のインデックス「PK_Mytable」の行の長さが、許容される最大長の「8060」バイトを超えています。 しかし、9バイトの650倍は5850バイトにすぎず、これは指定された制限の8060バイトからはかなりかけ離れています。 サーバーは、SQL Server 2016 SP1 CU2でWindows 2012 r2を実​​行しています ページ圧縮を使用する場合の行オーバーヘッドは何ですか? ここに私が何を意味するかを示すいくつかのコードがあります: /* test script to demo MSG 1975 */ DECLARE @sql NVARCHAR(max)='', @i INT =0 drop table if exists dbo.mytable; SET @sql = 'Create table dbo.Mytable (MyTableID bigint not …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.