JP7277675B2 - Select*クエリのゼロコピー最適化 - Google Patents
Select*クエリのゼロコピー最適化 Download PDFInfo
- Publication number
- JP7277675B2 JP7277675B2 JP2022568972A JP2022568972A JP7277675B2 JP 7277675 B2 JP7277675 B2 JP 7277675B2 JP 2022568972 A JP2022568972 A JP 2022568972A JP 2022568972 A JP2022568972 A JP 2022568972A JP 7277675 B2 JP7277675 B2 JP 7277675B2
- Authority
- JP
- Japan
- Prior art keywords
- query
- data
- data block
- determining
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24535—Query rewriting; Transformation of sub-queries or views
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24537—Query rewriting; Transformation of operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2445—Data retrieval commands; View definitions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本開示は、データベース操作のゼロコピー最適化についての技術に関する。
分散ストレージ(すなわち、クラウドストレージ)は益々普及しており、ストレージコストは下がっており、クラウドデータベースのサイズは劇的に大きくなっている。たとえば、テーブルは、サイズが大きくない場合、テラバイトであることが多い。これらのテーブルに対する操作(たとえば、テーブルの複製)は、多くの場合、システムリソースと時間との両方において、かなりのコストがかかる。SQL(Structured Query Language)は、リレーショナルデータベース管理システムの標準言語である。ユーザは、多くの場合、クラウドデータベースとやり取りするためのSQLクエリを入念に作成する。
本開示の態様は、方法を提供する。この方法は、データ処理ハードウェアでおいて、データ処理ハードウェアと通信しているメモリハードウェア上に格納された複数のデータブロックを含む第1のテーブルに対して行う操作を指定するクエリを受信することを含み、第1のテーブルにある各データブロックは、データブロックを参照するテーブルの数を示す参照数を含む。また、この方法は、データ処理ハードウェアが、クエリが指定した操作が第1のテーブルにある複数のデータブロックを第2のテーブルにコピーすることを含む、と決定することを含む。方法は、クエリが指定した操作が第1のテーブルにある複数のデータブロックを第2のテーブルにコピーすることを含む、と決定したことに応答して、第2のテーブルにコピーされた第1のテーブルにある複数のデータブロックのデータブロックごとに、データ処理ハードウェアが、第1のテーブルにあるデータブロックに対応付けられた参照数をインクリメントすることと、データ処理ハードウェアが、第2のテーブルにコピーされた対応するデータブロックの参照を、第2のテーブルのメタデータに追加することとをさらに含む。
詳細な説明
巨大サイズのテーブルやデータベースを格納するために、分散ストレージ(すなわち、クラウドストレージ)が多く使われるようになった。テーブルのサイズが数テラバイト、さらには数ペタバイトであって、何百万という数のエントリ(すなわち、データブロック)を含むことは、珍しいことではない。これらのテーブルを問い合わせること(すなわち、読み出し、書き込み)は、極めて多くのリソースを必要とする場合が多い。非常に多くのリソースを必要とする操作の例として、テーブルの一部またはすべてを複製またはコピーすることがある。いくつかのフォールトトレラントデータベースでは、データベースは、大量のクエリ出力に対応するためにデータのコピーを行う。たとえば、ユーザは、第1のテーブル全体を選択して第2のテーブルに読み出すおよび/または複製するためのSQL(Structured Query Language)クエリのSELECT*を利用し得る。このクエリは、通常、テーブルの行を含んだ各データブロックを読み出す(ディスク帯域幅およびネットワーク帯域幅を消費する)ことと、これらの行をオンディスクフォーマットからインメモリフォーマットにデコードすることとを必要とする。続いて、これらの行は、オンディスクフォーマットの新しいブロックとしてエンコードされ、計算資源をさらに消費する。さらには、これらの新しいデータブロックは元のデータブロックから完全に独立しているので、新たに生成されたデータブロックが、データを格納するために必要なディスク容量を増やしてしまう。いくつかのシナリオでは、最良のレイアウトを決定するために、データのフルシャッフルが行われる。
Claims (23)
- コンピュータにより実現される方法(500)であって、データ処理ハードウェア(144)上で実行されると、前記データ処理ハードウェア(144)に動作を実行させ、前記動作は、
前記データ処理ハードウェア(144)と通信しているメモリハードウェア(146)上に格納された複数のデータブロック(152)を含む第1のテーブル(158a)に対して行う操作を指定するクエリ(20)を受信することを含み、前記第1のテーブル(158a)にある各データブロック(152)は、前記データブロック(152)を参照するテーブル(158)の数を示す参照数(154)を含み、前記動作は、さらに、
前記クエリ(20)が指定した前記操作が前記第1のテーブル(158a)にある前記複数のデータブロック(152)を第2のテーブル(158b)にコピーすることを含む、と決定することと、
前記クエリ(20)が指定した前記操作が前記第1のテーブル(158a)にある前記複数のデータブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、と決定したことに応答して、前記第2のテーブル(158b)にコピーされる前記第1のテーブル(158a)にある前記複数のデータブロック(152)の各々のデータブロック(152)ごとに、
前記第1のテーブル(158a)にある前記各々のデータブロック(152)に対応付けられた前記参照数(154)をインクリメントすることと、
前記各々のデータブロック(152)の参照(160)を、前記第2のテーブル(158b)のメタデータ(159)に追加することとを含む、方法(500)。 - 前記第1のテーブル(158a)にある前記複数のデータブロック(152)を前記第2のテーブル(158b)にコピーすることは、前記複数のデータブロック(152)を複製しないで、前記第1のテーブル(158a)にある各データブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、請求項1に記載の方法(500)。
- 前記クエリ(20)は、SELECT*SQL(Structured Query Language)ステートメントを含む、請求項1または2に記載の方法(500)。
- 前記クエリ(20)が指定した前記操作が前記第1のテーブル(158a)にある前記複数のデータブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、と決定することは、前記クエリ(20)の代数化の間に、
前記クエリ(20)のサブ操作を決定することと、
決定した前記クエリ(20)の前記サブ操作が少なくとも1つのデータブロック(152)を前記メモリハードウェア(146)に書き込むためのサブ操作と、少なくとも1つのデータブロック(152)を前記メモリハードウェア(146)から読み出すためのサブ操作とを含む、と決定することとを含む、請求項1~3のいずれか1項に記載の方法(500)。 - 少なくとも1つのデータブロック(152)を前記メモリハードウェア(146)に書き込むための前記サブ操作は、マテリアライズサブ操作を含む、請求項4に記載の方法(500)。
- 少なくとも1つのデータブロック(152)を前記メモリハードウェア(146)から読み出すための前記サブ操作は、スキャンサブ操作を含む、請求項4または5に記載の方法(500)。
- 決定した前記クエリ(20)の前記サブ操作が前記少なくとも1つのデータブロック(152)を読み出すための前記スキャンサブ操作を含む、と決定することは、決定した前記クエリ(20)の前記サブ操作が前記少なくとも1つのデータブロック(152)を読み出すためのスキャンサブ操作を1つだけ含む、と決定することを含む、請求項6に記載の方法(500)。
- 前記クエリ(20)が前記第1のテーブル(158a)にある前記複数の前記データブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、と決定することは、
前記クエリ(20)に対応付けられる列(420)のリストの順序を決定することと、
前記第1のテーブル(158a)の列(430)の順序を決定することと、
前記クエリ(20)に対応付けられる列(420)の前記リストの前記順序が前記第1のテーブル(158a)の列(430)の前記順序と同じである、と決定することとを含む、請求項1~7のいずれか1項に記載の方法(500)。 - 前記動作は、前記クエリ(20)が前記第1のテーブル(158a)にある前記複数のデータブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、と決定しながら、前記第1のテーブル(158a)に対する前記クエリ(20)が指定した前記操作の実行を開始することをさらに含む、請求項1~8のいずれか1項に記載の方法(500)。
- 前記動作は、前記クエリ(20)が前記第1のテーブル(158a)にある前記複数のデータブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、と決定したことに応答して、前記第1のテーブル(158a)に対する前記クエリ(20)の実行を停止することをさらに含む、請求項9に記載の方法(500)。
- 前記動作は、前記複数の前記データブロック(152)の各データブロック(152)の前記参照(160)を前記第2のテーブル(158b)の前記メタデータ(159)に追加した後に、
前記第1のテーブル(158a)を削除する要求を受信することと、
前記第1のテーブル(158a)の各データブロック(152)の前記参照数(154)をデクリメントすることとをさらに含む、請求項1~10のいずれか1項に記載の方法(500)。 - システム(100)であって、
データ処理ハードウェア(144)と、
前記データ処理ハードウェア(144)と通信しているメモリハードウェア(146)とを備え、前記メモリハードウェア(146)は、命令を格納し、前記命令は、前記データ処理ハードウェア(144)上で実行されると、前記データ処理ハードウェア(144)に動作を実行させ、前記動作は、
前記データ処理ハードウェア(144)と通信しているメモリハードウェア(146)上に格納された複数のデータブロック(152)を含む第1のテーブル(158a)に対して行う操作を指定するクエリ(20)を受信することを含み、前記第1のテーブル(158a)にある各データブロック(152)は、前記データブロック(152)を参照するテーブル(158)の数を示す参照数(154)を含み、前記動作は、さらに、
前記クエリ(20)が指定した前記操作が前記第1のテーブル(158a)にある前記複数のデータブロック(152)を第2のテーブル(158b)にコピーすることを含む、と決定することと、
前記クエリ(20)が指定した前記操作が前記第1のテーブル(158a)にある前記複数のデータブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、と決定したことに応答して、前記第2のテーブル(158b)にコピーされる前記第1のテーブル(158a)にある前記複数のデータブロック(152)の各々のデータブロック(152)ごとに、
前記第1のテーブル(158a)にある前記各々のデータブロック(152)に対応付けられた前記参照数(154)をインクリメントすることと、
前記各々のデータブロック(152)の参照(160)を、前記第2のテーブル(158b)のメタデータ(159)に追加することとを含む、システム(100)。 - 前記第1のテーブル(158a)にある前記複数のデータブロック(152)を前記第2のテーブル(158b)にコピーすることは、前記複数のデータブロック(152)を複製しないで、前記第1のテーブル(158a)にある各データブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、請求項12に記載のシステム(100)。
- 前記クエリ(20)は、SELECT*SQL(Structured Query Language)ステートメントを含む、請求項12または13に記載のシステム(100)。
- 前記クエリ(20)が指定した前記操作が前記第1のテーブル(158a)にある前記複数のデータブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、と決定することは、前記クエリ(20)の代数化の間に、
前記クエリ(20)のサブ操作を決定することと、
決定した前記クエリ(20)の前記サブ操作が少なくとも1つのデータブロック(152)を前記メモリハードウェア(146)に書き込むためのサブ操作と、少なくとも1つのデータブロック(152)を前記メモリハードウェア(146)から読み出すためのサブ操作とを含む、と決定することとを含む、請求項12~14のいずれか1項に記載のシステム(100)。 - 少なくとも1つのデータブロック(152)を前記メモリハードウェア(146)に書き込むための前記サブ操作は、マテリアライズサブ操作を含む、請求項15に記載のシステム(100)。
- 少なくとも1つのデータブロック(152)を前記メモリハードウェア(146)から読み出すための前記サブ操作は、スキャンサブ操作を含む、請求項15または16に記載のシステム(100)。
- 決定した前記クエリ(20)の前記サブ操作が前記少なくとも1つのデータブロック(152)を読み出すための前記スキャンサブ操作を含む、と決定することは、決定した前記クエリ(20)の前記サブ操作が前記少なくとも1つのデータブロック(152)を読み出すためのスキャンサブ操作を1つだけ含む、と決定することを含む、請求項17に記載のシステム(100)。
- 前記クエリ(20)が前記第1のテーブル(158a)にある前記複数の前記データブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、と決定することは、
前記クエリ(20)に対応付けられる列(420)のリストの順序を決定することと、
前記第1のテーブル(158a)の列(430)の順序を決定することと、
前記クエリ(20)に対応付けられる列(420)の前記リストの前記順序が前記第1のテーブル(158a)の列(430)の前記順序と同じである、と決定することとを含む、請求項12~18のいずれか1項に記載のシステム(100)。 - 前記動作は、前記クエリ(20)が前記第1のテーブル(158a)にある前記複数のデータブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、と決定しながら、前記第1のテーブル(158a)に対する前記クエリ(20)が指定した前記操作の実行を開始することをさらに含む、請求項12~19のいずれか1項に記載のシステム(100)。
- 前記動作は、前記クエリ(20)が前記第1のテーブル(158a)にある前記複数のデータブロック(152)を前記第2のテーブル(158b)にコピーすることを含む、と決定したことに応答して、前記第1のテーブル(158a)に対する前記クエリ(20)の実行を停止することをさらに含む、請求項20に記載のシステム(100)。
- 前記動作は、前記複数の前記データブロック(152)の各データブロック(152)の前記参照(160)を前記第2のテーブル(158b)の前記メタデータ(159)に追加した後に、
前記第1のテーブル(158a)を削除する要求を受信することと、
前記第1のテーブル(158a)の各データブロック(152)の前記参照数(154)をデクリメントすることとをさらに含む、請求項12~21のいずれか1項に記載のシステム(100)。 - 請求項1~11のいずれか1項に記載の方法をコンピュータに実行させるための、プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063023409P | 2020-05-12 | 2020-05-12 | |
US63/023,409 | 2020-05-12 | ||
PCT/US2021/031448 WO2021231234A1 (en) | 2020-05-12 | 2021-05-08 | Zero copy optimization for select * queries |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023518118A JP2023518118A (ja) | 2023-04-27 |
JP7277675B2 true JP7277675B2 (ja) | 2023-05-19 |
Family
ID=76181296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022568972A Active JP7277675B2 (ja) | 2020-05-12 | 2021-05-08 | Select*クエリのゼロコピー最適化 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11609909B2 (ja) |
EP (1) | EP4150478A1 (ja) |
JP (1) | JP7277675B2 (ja) |
KR (1) | KR20230003277A (ja) |
CN (1) | CN115552391B (ja) |
WO (1) | WO2021231234A1 (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008530716A (ja) | 2005-02-18 | 2008-08-07 | オラクル・インターナショナル・コーポレイション | データベースシステムにおいて報告トランザクションを処理する方法およびメカニズム |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11120067A (ja) * | 1997-10-17 | 1999-04-30 | Hitachi Ltd | データの部分情報を先行して管理するデータベース処理方法 |
CN100390790C (zh) * | 2002-05-10 | 2008-05-28 | 甲骨文国际公司 | 存储和访问数据,以及提高数据库查询语言语句性能的方法和机制 |
US7493311B1 (en) * | 2002-08-01 | 2009-02-17 | Microsoft Corporation | Information server and pluggable data sources |
US7243088B2 (en) * | 2003-08-06 | 2007-07-10 | Oracle International Corporation | Database management system with efficient version control |
US8032514B2 (en) * | 2005-01-14 | 2011-10-04 | International Business Machines Corporation | SQL distinct optimization in a computer database system |
EP2115593B1 (en) * | 2007-01-26 | 2018-10-24 | Intel Corporation | Hierarchical immutable content-addressable memory processor |
CN101908045A (zh) * | 2009-06-02 | 2010-12-08 | 北京润乾信息系统技术有限公司 | 一种数据处理方法 |
CN101789024A (zh) * | 2010-03-05 | 2010-07-28 | 北京润乾信息系统技术有限公司 | 一种数据处理方法 |
US8655867B2 (en) * | 2010-05-13 | 2014-02-18 | Salesforce.Com, Inc. | Method and system for optimizing queries in a multi-tenant database environment |
CN106611044B (zh) * | 2016-12-02 | 2020-05-08 | 星环信息科技(上海)有限公司 | 一种sql优化方法及设备 |
JP7074454B2 (ja) * | 2017-10-30 | 2022-05-24 | キオクシア株式会社 | 計算機システムおよび制御方法 |
CN109086333B (zh) * | 2018-07-04 | 2022-03-25 | 联想(北京)有限公司 | 用于数据块的处理方法和系统 |
CN110007869B (zh) * | 2019-04-12 | 2020-06-30 | 苏州浪潮智能科技有限公司 | 一种内存数据拷贝方法、装置、设备及计算机存储介质 |
-
2021
- 2021-05-08 WO PCT/US2021/031448 patent/WO2021231234A1/en unknown
- 2021-05-08 US US17/315,281 patent/US11609909B2/en active Active
- 2021-05-08 CN CN202180034753.2A patent/CN115552391B/zh active Active
- 2021-05-08 JP JP2022568972A patent/JP7277675B2/ja active Active
- 2021-05-08 EP EP21728772.1A patent/EP4150478A1/en active Pending
- 2021-05-08 KR KR1020227042806A patent/KR20230003277A/ko unknown
-
2023
- 2023-03-17 US US18/185,925 patent/US20230229657A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008530716A (ja) | 2005-02-18 | 2008-08-07 | オラクル・インターナショナル・コーポレイション | データベースシステムにおいて報告トランザクションを処理する方法およびメカニズム |
Non-Patent Citations (1)
Title |
---|
清水 美樹,Python向けフレームワーク Flask+SQLite3でWeb-DBアプリ開発!,日経ソフトウエア,日本,日経BP社,2019年01月24日,第22巻第2号通巻262号,pp. 94-113 |
Also Published As
Publication number | Publication date |
---|---|
CN115552391A (zh) | 2022-12-30 |
EP4150478A1 (en) | 2023-03-22 |
JP2023518118A (ja) | 2023-04-27 |
US20230229657A1 (en) | 2023-07-20 |
US11609909B2 (en) | 2023-03-21 |
KR20230003277A (ko) | 2023-01-05 |
WO2021231234A1 (en) | 2021-11-18 |
CN115552391B (zh) | 2023-08-25 |
US20210357404A1 (en) | 2021-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11288267B2 (en) | Pluggable storage system for distributed file systems | |
US20190303406A1 (en) | Systems and Methods for Optimizing Performance of Graph Operations | |
US7962583B2 (en) | Dynamically adding partitions to be distributed directory setup with no downtime | |
JP2017507426A (ja) | 半構造データスキーマのトランスペアレントディスカバリ | |
US20170212930A1 (en) | Hybrid architecture for processing graph-based queries | |
US20180218039A1 (en) | Query planning and execution with reusable memory stack | |
US11811851B2 (en) | Method and system for enforcing governance across multiple content repositories using a content broker | |
US20240232722A1 (en) | Handling system-characteristics drift in machine learning applications | |
JP2019537097A (ja) | Iノードのアクセスパターンの追跡及びiノードの先取り | |
KR20230096107A (ko) | 빅 메타데이터 관리를 위한 열 기반 기법들 | |
Ahad et al. | Comparing and analyzing the characteristics of hadoop, cassandra and quantcast file systems for handling big data | |
JP7277675B2 (ja) | Select*クエリのゼロコピー最適化 | |
US10769214B2 (en) | Encoding and decoding files for a document store | |
US11789971B1 (en) | Adding replicas to a multi-leader replica group for a data set | |
US11550793B1 (en) | Systems and methods for spilling data for hash joins | |
WO2024156113A1 (en) | Runtime error attribution for database queries specified using a declarative database query language | |
US20240256549A1 (en) | Evaluating Expressions Over Dictionary Data | |
US11113296B1 (en) | Metadata management for a transactional storage system | |
US20240256550A1 (en) | Dictionary Filtering and Evaluation in Columnar Databases | |
US20240265011A1 (en) | Multi-Cluster Query Result Caching | |
US20240126816A1 (en) | Self-discovery and construction of type-sensitive columnar formats on type-agnostic storage servers to accelerate offloaded queries |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230117 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230117 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20230117 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230411 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230508 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7277675 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |