Fetch huge data from MySQL in Java

💡 Усі статті, обговорення, новини про Java — в одному місці. Приєднуйтесь до Java спільноти!

Вот такая возникла проблема:

есть очень большая таблица MyISAM. Нужно из джавы вытащить все данные, то есть выполнить простой запрос: «select * from mtable». Наблюдаю два случая:
1. просто выполняю запрос — JDBC драйвер пытается вытащить все данные сразу — получаю OutOfMemory.
2. Выставляю fetch size у PreparedStatement. Сервер начинает создавать большие файлы во временной директории и у меня заканчивается место на диске.

Помогите спасите))

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Igor & Anonim,

Да, именно я так в конце концов и сделал. Просто есть программы (например sphinx search) которые вытаскивают данные без дополнительных ухищрений, поэтому я искал рецепт как это сделать на JDBC.

делайте как antony говорит, только сначала вычитайте все primary_key, разбейте на страницы и читайте по страницам

SELECT * FROM mtable WHERE primary_key> =a1 AND primary_key < a2;
SELECT * FROM mtable WHERE primary_key> =a2 AND primary_key < a3;
SELECT * FROM mtable WHERE primary_key> =a3 AND primary_key < a4;
и т.д.

mysql при указании LIMIT n, m будет пробегать по первым n записям, потому и тормоза

@crypto5,

так чому їх не можна зробити малими та викликати запит багато раз?:)

Думаю что я пробовал этот вариант, и проблема в том что когда n и m большие, запросы сильно тормозят.

Підписатись на коментарі