JDBC: есть ли возможность получить размер зафиксированных данных в байтах - PullRequest
0 голосов
/ 02 декабря 2010

Если у меня есть Java-приложение, которое выполняет некоторые вставки в базу данных, если есть простой способ узнать, сколько байтов было зафиксировано (т. Е. Сумма всех данных во всех полях), без необходимости вычислять его вручную выборка и проверка размера результирующего набора?

-

Как указывает lucho, реализация класса операторов с учетом статистики поверх PreparedStatement может быть подходящим вариантом. Буду придерживаться этого и посмотрим, насколько хорошо это сработает.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2010

Интересная проблема. Мне нравится решение Лучо, но у меня есть два более быстрых (хакерских) варианта:

  1. Вы можете попытаться использовать SHOW TABLE STATUS InnoDB и вести текущий журнал размера данных. Это даст вам знать, но на моей машине для разработки вызов ее для одной базы данных занимает 5,3 с (56 таблиц), поэтому, если вы не хотите получать данные только для одной или двух таблиц, это, вероятно, слишком медленно (не говоря уже о блокировке, которую это может вызвать).

  2. Вы можете следить за процессом БД и использовать ОС, чтобы сообщить вам, сколько она пишет. Я знаю, что Windows может сказать вам это, и я почти уверен, что и Linux тоже. Но если вы разместите 3 базы данных, вы получите только общее количество, а некоторые из них будут отклонены из-за транзакций и тому подобного.

Просто случайные идеи.

0 голосов
/ 02 декабря 2010

Насколько я знаю, нет.

Вам придется задать своей базе данных этот вопрос;возможно, это можно сделать, не запрашивая то же самое, что вы вставили (потому что это звучит немного бессмысленно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...