問題タブ [partitioning]

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.

0 投票する
3 に答える
18205 参照

sql - マルチパーティションのPostgresテーブルの効率的なクエリ

Postgres8.2でパーティショニングを使用するようにデータベースを再構築しました。クエリのパフォーマンスに問題があります。

テーブルには4500万行あります。パーティショニングの前に、これは逆インデックススキャンを使用し、制限に達するとすぐに停止します。

(time_stamp範囲で)パーティション分割した後、Postgresはマスターテーブルと関連するパーティションの完全なインデックススキャンを実行し、結果をマージして並べ替え、制限を適用します。これには時間がかかりすぎます。

私はそれを修正することができます:

これはすぐに実行されます。タイムスタンプが範囲外にあるパーティションは、クエリプランに含まれていません。

私の質問は次のとおりです。クエリプランナーがテーブル全体をスキャンするのを防ぐためにPostgres8.2で使用できるヒントや構文はありますが、マスターテーブルのみを参照する単純な構文を使用していますか?

基本的に、現在定義されている各パーティションに大きなUNIONクエリを動的に構築するという苦痛を回避できますか?

編集: constraint_exclusionを有効にしました(@Vinko Vrsalovicに感謝します)

0 投票する
5 に答える
2630 参照

linux - ファイルシステムを初期化する方法は?

/ dev/sdaにいくつかのパーティションがあります。プログラムでそれらをすべて削除したいと思います。1つの方法は、すべてのパーティションを一覧表示してから、それらを1つずつ削除することです。別の方法はただ実行することです

最初のオプションは、現在のパーティションのリストで出力が得られず、現在のパーティションを削除できなかったために、パーティションテーブルに問題が発生したときに失敗しました。

2番目の方法は時間がかかりすぎます。ハードディスク全体(/ dev / sda)をシェルスクリプトからパーティション化されていないものとして設定する「簡単な方法」はありますか?

0 投票する
1 に答える
596 参照

sql - NLS_COMP = Linguistic を使用した Oracle パーティションのプルーニング

オラクル10g.

varchar2 列でパーティション分割された大きなテーブルがあります (私に任せれば、この列ではありませんが、そうです)。各パーティションには単一の値があります。元。パーティション "PARTITION1" 値 ('C')。

NLS_COMP = LINGUISTIC もあります。

その列の値を示す場合、パーティションのプルーニングは機能しません。

これにより、関連するパーティションだけでなく、すべてのパーティションで完全なテーブル スキャンが実行されます。

こちらのドキュメントによると 、「NLS_COMP パラメータは、分割されたテーブルの比較動作には影響しません。」

私が発行した場合:

その後:

パーティションを正しくプルーニングします。(私は、生成された計画から剪定/剪定しないことに基づいています)

パーティション名を from 句にハードコーディングする以外に、ここで機能するものはありますか?

さらに、パーティション定義の変更もアウトです。これを問題と見なすことさえあるので、私はチームの少数派です。私がそこに着く前に、前のチームは、FROM 句にハードコーディングされたパーティション名を追加し、誰かにストアド プロシージャのパーティション名を手動で更新させる文字列の検索と置換を介して、すべてのアプリケーション SQL クエリを送信することで、この問題を「解決」することを決定しました。必要に応じて...しかし、いつか壊れて、激しく壊れます。最も侵襲性の低いアプローチを見つけようとしていますが、そうではないかもしれません。

できれば、基になるデータベース構造ではなく、クエリ自体のみを変更するソリューションになります。私が言ったように、この解決策は単に存在しないかもしれません...

0 投票する
1 に答える
1351 参照

sql - 外部キーに基づいて SQL Server で効率的にパーティション分割するにはどうすればよいですか?

SQL Server で作業しており、テーブルにパーティションを作成したいと考えています。別のテーブルにある外部キーに基づいて作成したいと考えています。

fk が table2 を指す

table2 のデータに基づいて table1 を分割したい (つまり、table2 にカテゴリが含まれている場合)

0 投票する
5 に答える
3162 参照

postgresql - 最適なデータベース テーブルの最適化方法

最適化する必要があるデータベース テーブルが大きくなりすぎて (数億行) あるのですが、それをパーティション分割する前に、提案について尋ねてみようと思いました。

使用法は次のとおりです。

0 . テーブルには、それぞれ約 20 バイトの長さの約 10 列が含まれます。

  1. INSERTS は、毎秒数百回の速度で実行されます。

  2. SELECT ステートメントは、列 'a' (ここで a='xxxx' ) に基づいて 1 時間に数回実行されます。

  3. DELETE ステートメントは、DATE 列に基づいて実行されます。(日付が 1 年以上古い場合は削除) 通常は 1 日 1 回。

重要な要件は、INSERT および SELECT ステートメントを高速化し、削除中にテーブル全体をロックダウンすることなく、1 年前の履歴データを保持できるようにすることです。

列 'a' 用と日付フィールド用の 2 つのインデックスが必要だと思います。または両方を最適化することは可能ですか?

選択の速度と削除の速度の間に必要なトレードオフはありますか?

パーティショニングが唯一の解決策ですか? そのようなテーブルを分割するための良い戦略は何ですか?

PostgreSQL 8.4 データベースを使用しています。

0 投票する
1 に答える
113 参照

sql-server - テーブルをパーティション分割する場合、SQL Serverに通知せずにファイルをパーティションに置き換えることはできますか?

サーバーを起動する前にpartitionN.ndfを置き換えるだけで、あるテーブルパーティションを別のテーブルパーティションに交換できるようにしたいと思います。

一般的な目的は、テーブル行のいくつかのセットを異なるファイルに分割して、アプリのインストール時に1つのセットのみに対応できるようにすることです。常に必要な行がいくつかあるので、

シナリオA

シナリオB

ここでは、IDを1000から分割し、共通データベースに低い数を保持します。シナリオ固有のパーティション内の共通データベース内のテーブルとの参照整合性を維持するために必要なIDが多数あります。

それはうまくいくでしょうか?または、サーバーの実行中にサーバーを置き換えるために、サーバーにパーティション化コマンドを発行する必要がありますか?質問の一部は、サーバーが起動してファイルを読み取るだけなのか、それとも置換の影響を受けやすいキャッシュやその他のものを維持しているのかということだと思います。

0 投票する
3 に答える
3998 参照

oracle - パーティション化されたテーブルを異なる数のパーティションを持つテーブルにインポートする方法は? (オラクル 10g)

それぞれ 4 つのパーティションを持つテーブルを持つ既存のデータベースがあります (RANGE と HASH の両方のパーティション分割を使用するテーブルがあります)。

同じテーブルに 8 つのパーティションがある、事前に作成されたスキーマを持つ別のデータベースにインポートする必要があります。

どうすればいいですか?テーブルレベルのインポートを行った場合、これは「うまくいく」のですか?

0 投票する
2 に答える
3045 参照

mysql - タイムスタンプでのMySQLパーティショニングクエリ

Solaris10でMySQL5.1.30を実行しています。毎月12に分割するテーブルがあるためです。

次のようなテーブル構造

特定の日数を照会したい場合。

タイムスタンプにタイプtimestampを使用すると、すべてのパーティションが照会されます。ただし、タイプをタイムスタンプの日時に変更すると、1つのパーティションのみが照会されます(p004)。

タイムスタンプにタイプtimestampを使用して、1つのパーティションのみをクエリするにはどうすればよいですか?

0 投票する
2 に答える
8123 参照

mysql - どの mysql パーティショニング モデルをいつ使用するか

わかりました、mySQL でいくつかのテーブルを分割することから始めたところです。これを説明する方法はいくつかありますが、私が見つけられないのは、より実用的なアプローチです。- 各パーティショニング方法が最も効果的なのは、どのタイプのデータですか?

それとも本当に関係ありませんか?

参照: http://dev.mysql.com/tech-resources/articles/performance-partitioning.html

0 投票する
2 に答える
9844 参照

mysql - 外部キーを持つ mySQL テーブルを分割しますか?

mySQLは明らかにこれを楽しんでいないので、これを行う適切な方法は何でしょうか。データベース設計からパーティショニングまたは外部キーを除外することは、私には良い考えとは思えません。これには回避策があると思いますか?

更新 03/24:

http://opendba.blogspot.com/2008/10/mysql-partitioned-tables-with-trigger.html

パーティショニング中に外部キーを処理する方法

ありがとう!