タグ付けされた質問 「database-internals」

データベースエンジンの内部動作に関する技術的な質問。

2
インデックスではない列は、インデックスとともにディスク上でソートされていますか?
インデックスではないカラムは、MySQL、MyISAM、InnoDBで、インデックスと一緒にディスク上でソートされますか? 私が書き始めた誤った考え: それらは索引付けされていないので、おそらくそうではないと思います。それらがソートされた場合、それらはインデックスであることを意味します。 すべてのインデックス列が独自のコンテンツの順序で並べ替えられているため、これは正しくありませんが、対応するインデックスを持つすべての行(または一部の列のみ)の順序付けについて質問しています。 説明すると、これは、インデックスによって並べて並んでいる行の範囲をより速く選択するのに役立ちます。たとえば、select * where id >1000 and id<2000(MySQL構文に誤りがある可能性があり、よくわからない)場合、おそらく1000から2000までのセルが物理ディスク上に残っているため、id列自体をディスクからすばやく読み取ることができます。 。ただし、ID 1000から2000に対応する他の列の内容は、物理ディスク上の別の場所に書き込まれる場合があります。それらもソートされている場合、より速く読み取られます。おそらく、MySQLはそのような操作のパフォーマンスのために、物理ディスク上の列を自動的にソートします。 それらは他のタイプのデータベース(PostgreSQLなど)でソートされていますか? 12月27日:2つの回答から、クラスター化インデックス/主キーがある場合、単純な行自体が物理ディスク上でソートされていない可能性があります(私が思ったように)、クラスター化インデックスでさえもソートされていない、それがbツリーである場合、私はbツリーについて読み、そのノードが、私が理解しているように、ディスク上のランダムな場所に留まっていることを確認しました。

1
SQL ServerのSGAM&GAM&IAM&PFSに関するいくつかの質問
SQL Serverの内部構造についていくつか質問があります。 データベースにテーブルがあるとしましょう。 SGAMおよびGAMページは、単一のGAM間隔(〜4GB)内で共有エクステントと均一エクステントを追跡し、ページ/エクステントを割り当てるときに適切なタイプのエクステントを見つけるのに役立ちます(最初の8ページは、混合エクステントとそれらのページの位置から割り当てられます) IAMページへのレコーダー、およびその後のGAMエクステント(均一エクステント)からのこの情報は、次のチェーンIAMページに格納されます)。 たとえば、テーブルのページが割り当てられ、テーブルのサイズが8ページを超えていて、しばらくしてから行が削除され、再利用可能な領域が残ったとします。SQL Serverは、エクステントに空き領域があることをどのように認識しますか? ページには空き領域のサイズに関する情報がありますが、すべてのページをチェックするには時間がかかりすぎます。SGAM&GAMページのビットは、extendが割り当てられているか、いくつかの空きページがあることを除いて何も通知しません(ページ全体が部分的にではなく、空きです)。 ファイルヘッダー、SGAM、GAM、IAMページは、ファイル内の最初のページに含まれます。実際にそれらを指すデータ構造は何ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.