У меня проблема с производительностью, при обработке миллиарда записей с использованием запроса на выборку у меня есть таблица как
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 строки для обработки, поэтому здесь разделение бесполезно, я получил идею от веб-сайтов использовать механизм хранения архива. но он будет использовать полное сканирование таблицы и не использовать индекс при выборе, в основном 99% я использую запрос выбора в этой таблице, и эта таблица будет увеличивать свой счет каждый день. В настоящее время я нахожусь в базе данных mysql, которая имеет версию 5.0.1.i получил представление об использовании базы данных nosql, но есть ли способ справиться с mysql, если вы предлагаете средства nosql, которые я могу использовать cassandra или accumulo?.