問題タブ [sparse-columns]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server-2008 - 通常のリレーショナルテーブルの代わりにスパース列を使用するリスクは何ですか?
1つのテーブルに関連する3つのテーブルがあります。新しいデザインでは、スパース列を使用して関係を置き換えたいと考えています。下の図をご覧ください。
冗長性があることはわかっていますが、この設計方法の他のリスクは何ですか?この新しい方法で、私のクエリは非常に簡単で高速になります。それについてのあなたの考えは何ですか?私の悪い英語をお詫びします、そしてありがとう。
sql-server - スパース列を使用してログ ファイル内の反復データを削減する
セッションごとに 100 列 X 500,000 行で構成されるテーブルに自動車のパフォーマンス メトリックを記録するアプリケーションを構築しています。一部の列は非常に反復的です (華氏単位の冷媒温度)。他の列は連続的に変化します (点火進角、マニホールド圧力、空燃比)。
プロジェクトはオープンソースのオーディエンスを対象としているため、列ストアとページ圧縮は問題外です。MS SQL Express Edition または大規模なテーブル サイズに対応できる別の無料のデータベース プラットフォームをサポートする必要があります。
私の最初の解決策は、いくつかの列でnullを許可することです。これにより、繰り返し値を挿入しないことでストレージのフットプリントが劇的に削減され、これによりログ解像度をより高いフレームレートに上げることができます.
ただし、特定の列が 99% null になるため、個別の行を選択するときに障害が発生します。したがって、そのフィールドに値を含む最後の行を選択するビュー (または計算列?) を作成する必要があります。私のアプローチは、スパース列ごとにサブクエリを使用することです。これはひどく非エレガントに思えます。検討すべきより効率的なアプローチはありますか?
sql - 節約を示さないスパース列
いくつかのスパース列を含むテーブルとスパース列を含まないテーブルを比較するテストを実行しましたが、スペースがまったく節約されていません。
2 つのテーブルがあり、どちらも主に varchar 列にアドレス情報を格納しています。どちらのテーブルも null を許可し、一方のテーブルには列の疎なプロパティ セットがあります。
それぞれに 1000 行のデフォルト値を挿入します (デフォルト値は null です)。スパース列は null を別の方法で格納するため、スペースを節約できると思います。しかし、sp_spaceUsed を実行すると、節約が見られません。私が間違っていること、または私の理解が間違っている場所についてのアイデアはありますか?
sql - SQL Server:「SPARSE」がスペースに影響しないのはなぜですか?
alter table <> alter column<> SPARSE がケース 1 ~ 3 では効果がないのに、ケース 4 でのみ効果があるのはなぜですか? つまり、列は作成時にのみ SPARSE として宣言できると言えますか?
このコードは SQL2012 でテストしました。
r - R で sparseMatrix を申請する
R で(パッケージから)何らかのapply
関数を実行して、
同数のグループの列をカットする方法はあるのでしょうか?sparseMatrix
Matrix
k
また、 column 内の 0 より大きい要素のみをグループに分割する方法はありますか?
小さなsparseMatrix
コードはこのように見えますが、大きな行列では効率的に動作しないに違いありません。
sql-server - サイズのスパース データを含む行は作成できません
1 つの pk 列 (bigint)、1 つの非スパース bigint、30 k スパース列 (20 k ビット、5 k int、5 k nvarchar(255)) および列セットを含むテーブルがあります。
nvarchar 列を '.' で更新しようとすると、この列に現在 null が含まれている行では、次のようになります。
「8023 の最大許容スパース データ サイズより大きいサイズ 8028 のスパース データを含む行を作成できません。」
この行のnull以外の列のデータを合計すると、次のようになります
a) << 8023 バイト、ビットあたり 0.125、int あたり 4、nvarchar あたり 2 + datalength(..) を使用する場合。
そして、私は得る
b) >> ビットごとに 5、int ごとに 8、nvarchar ごとに 4 + datalength(..) を使用する場合は 8023。
したがって、b) の列あたりのバイト数は、SQL サーバーが 8023 の最大値を計算するために使用するバイト数にすることはできません。
そのため、なぜSQLサーバーが行がいっぱいであると言うのか混乱しています。
これは sql server 2012 の (既知の) バグですか?
ありがとうございました
今私はそれを試しました:
insert into sparsetable (dummy1, b1, i1, v1) values ('x', 1, 1, '123') -- サイズ 8054 のスパース データを持つ行は作成できません。 8019。
insert into sparsetable (dummy1, b1, i1) values ('x', 1, 1) -- サイズ 8042 のスパース データを持つ行は作成できません。これは、8019 の許容最大スパース データ サイズを超えています。
insert into sparsetable (dummy1, b1) values ('x', 1) -- サイズ 8032 のスパース データを持つ行は作成できません。これは、8019 の最大スパース データ サイズの許容値を超えています。
数字を説明できる人はいますか?
ありがとうございました
sql-server-2008 - MS SQL: テーブル内の null 以外の値を持つスパース列の最大数
SQL Server 2008がスパース列に割り当てるスペースを見つけようとしています。https://msdn.microsoft.com/en-us/library/cc280604(v=sql.100).aspxに記載されている値は間違っているようです。
bigint を pk としてテーブルを作成し、残りのすべてのスパース列を値 1 で埋めると、次のようにテーブルを作成できます。
1124 ビット列または 800 int 列または 1000 nvarchar(255) 列。
したがって、bit は 7 バイト、int は 10 バイト、nvarchar は 1 char 8 バイトを使用しているように見えます。これは、ドキュメントに記載されているよりも 2 バイト多くなっています。
何か案は?私は間違っていますか、それともドキュメントですか?
ありがとうございました
sql-server - NULL 値によって使用される記憶領域を計算する方法は?
これについて正確な情報を見つけるのは本当に難しいようです。MSDNには、スパース列に関する記事があり、それらを使用するときにどの null パーセンテージしきい値を考慮する必要があります。しかし、デフォルトの null ストレージ スペースの使用に関する事実を把握するのは非常に難しいようです。
一部の情報源は、NULL 値はスペースをまったく必要としないと主張していますが、それはそもそもスパース列が無意味であることを意味します。テーブル定義の null ビットマップだけが null 許容列を表すビットを追加するだけで、それ以上のオーバーヘッドはないと主張する人もいます。固定長の列 (char、int、bigint など) は、値が null であるかどうかに関係なく、実際には同じ量のストレージ スペースを使用すると主張する人もいます。
それで、それは本当にどれですか?
テーブル内の合計行数と、各列と型ごとの NULL 行の数を含む、DB 内のすべての null 許容列のリストがあるとします。NULL 値が現在使用しているスペースを正確に計算するにはどうすればよいでしょうか。代わりに、列をスパースに変更することで節約されるスペースを正確に予測できますか? null 以外の行に 4 バイトのオーバーヘッドを追加することはできますが、null 行をどうすればよいかわからない場合は役に立ちませんか?