選択クエリを使用して数十億のレコードを処理しているときに、パフォーマンスの問題があります。
CREATE TABLE `temp_content_closure2` (
`parent_label` varchar(2000) DEFAULT NULL,
`parent_code_id` bigint(20) NOT NULL,
`parent_depth` bigint(20) NOT NULL DEFAULT '0',
`content_id` bigint(20) unsigned NOT NULL DEFAULT '0',
KEY `code_content` (`parent_code_id`,`content_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (parent_depth)
PARTITIONS 20 */ |
テーブルを細分化することでパフォーマンスを向上させるパーティションを使用しましたが、私の場合は役に立ちません。このテーブルでサンプルを選択します
+----------------+----------------+--------------+------------+
| parent_label | parent_code_id | parent_depth | content_id |
+----------------+----------------+--------------+------------+
| Taxonomy | 20000 | 0 | 447 |
| Taxonomy | 20000 | 0 | 2286 |
| Taxonomy | 20000 | 0 | 3422 |
| Taxonomy | 20000 | 0 | 5916 |
+----------------+----------------+--------------+------------+
ここで、content_id は parent_dept に関して一意になるため、parent_depth をパーティショニングのキーとして使用しました。すべての深さで、2577833 行を処理する必要があるため、ここではパーティショニングは役に立ちません。Web サイトからアーカイブ ストレージ エンジンを使用するアイデアを得ました。ただし、フルテーブルスキャンを使用し、選択でインデックスを使用しません。基本的に99%、このテーブルで選択クエリを使用し、このテーブルは毎日カウントを増やします.現在、バージョン5.0.1のmysqlデータベースにいます.i使用するnosqlデータベースについてのアイデアを得ましたが、mysqlで処理する方法はありますか.nosqlを提案している場合、cassandraまたはaccumuloのどちらを使用できますか?.