Navigation Menu

Skip to content

Commit

Permalink
added decription of "count skip" to userguide document.
Browse files Browse the repository at this point in the history
  • Loading branch information
ikdttr committed Oct 26, 2010
1 parent 81e4add commit f416d15
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion doc/ja/source/userguide.rst
Expand Up @@ -107,7 +107,31 @@ groongaでは各カラムごとにファイルを分けてデータを格納す

SELECT c1, c2, c11 FROM t1 WHERE c2 = XX AND c12 = "XXX";

このケースではc1,c2,c11,c12に対してのみアクセスが行われることになります
このケースではc1,c2,c11,c12に対してのみアクセスが行われ、SQL文が高速に処理されることになります

行カウント高速化
----------------------------

COUNT(*)などの行カウントを行う場合と通常のSELECTによるデータ参照を行う場合に対して、従来よりMySQLではストレージエンジンの呼び出しを行う部分(=ストレージエンジンインタフェース)における区別が存在していないため、行数をカウントするだけで良いような場合にもレコードアクセス(SELECTの結果には含まれないデータへのアクセス)が行われる問題があります。

groongaストレージエンジンの前身であるTritonn(MySQL+Senna)ではこの問題に対して"2indパッチ"という不要なレコードアクセスを省略する仕組みを独自に実装してこの性能問題を回避していました。

これに引き続き、groongaストレージエンジンでも行カウントを高速化するための仕組みを実装しています。

例えば以下のSELECT文では不要なカラムデータの読み取りは省略され、必要最小限のコストで行カウントの結果を返すことができます。 ::

SELECT COUNT(*) FROM t1 WHERE MATCH(c2) AGAINST("hoge");

行カウント高速化の処理が行われたかどうかはステータス変数で確認することもできます。::

mysql> show status like 'groonga_count_skip';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| groonga_count_skip | 1 |
+--------------------+-------+
1 row in set (0.00 sec)

行カウント高速化の処理が行われる度に ``groonga_count_skip`` ステータス変数がインクリメントされます。

備考:この高速化機能はインデックスを用いて実装されています。テーブルスキャンが行われるパタンでは高速化は行われません。

0 comments on commit f416d15

Please sign in to comment.