Как узнать размер стола в день - PullRequest
1 голос
/ 30 августа 2011

У меня есть база данных с ~ 20 таблицами.В каждой таблице есть столбец «dtLogTime», в котором записывается время вставки строки.Я хочу выяснить размер (вероятно, КБ или МБ) каждой таблицы записи в день.Точнее, меня интересуют только последние 3 дня.Кроме того, эти таблицы отслеживают данные до определенного интервала времени (то есть 2 недели, 1 месяц и т. Д.), Что означает, что я теряю ценность данных за день для сохраненных данных каждого нового дня.код, который может показать мне размер каждой таблицы.

<?php

$link = mysql_connect('host', 'username', 'password');

$db_name = "your database name here";
$tables = array();

mysql_select_db($db_name, $link);
$result = mysql_query("SHOW TABLE STATUS");

while($row = mysql_fetch_array($result)) {
    /* We return the size in Kilobytes */
    $total_size = ($row[ "Data_length" ] + 
                   $row[ "Index_length" ]) / 1024;
    $tables[$row['Name']] = sprintf("%.2f", $total_size);
}

print_r($tables);
?>

Когда я попытался сделать

"SHOW TABLE STATUS WHERE dtLogTime < '2011-08-28 00:00:00' 
AND dtLogTime >= '2011-08-27 00:00:00'" 

, это дало мне ошибку.Есть ли способ сделать это?

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 августа 2011

Предложение Where применяется к результирующей таблице, сгенерированной SHOW TABLE STATUS, и не может быть фактическими столбцами ваших различных таблиц.Например:

SHOW TABLE STATUS where Index_length = 0

Запустите SHOW TABLE STATUS самостоятельно, чтобы увидеть список всех допустимых столбцов, которые можно использовать в предложении WHERE.К сожалению, для вашей ситуации вам придется запускать SHOW TABLE STATUS каждый день и хранить результат где-нибудь.

ОБНОВЛЕНИЕ

Для пояснения, SHOW TABLE STATUSудобный метод, который опрашивает системную таблицу, INFORMATION_SCHEMA.TABLES.Это сведет результаты этой системной таблицы к постоянным таблицам в вашей текущей базе данных.Он не выполняет никаких собственных вычислений.

0 голосов
/ 30 августа 2011

Вам необходимо включить предложение LIKE, чтобы указать таблицу. Источник: http://dev.mysql.com/doc/refman/5.6/en/show-table-status.html

SHOW TABLE STATUS 
LIKE YourTable
WHERE dtLogTime < '2011-08-28 00:00:00' 
AND dtLogTime >= '2011-08-27 00:00:00'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...