2016-07-27 2 views
0

Это вопрос, который я написал:Сравнивая самое последнее InnoDB_Rows_Inserted значения переменного со старым значением

SELECT variable_name,0 - variable_value 
    FROM information_schema.global_status 
WHERE variable_name IN ('Innodb_rows_inserted','Innodb_rows_updated' 
         ,'Innodb_rows_deleted','Innodb_rows_read' 
         ,'Innodb_data_reads','Innodb_data_read' 
         , 'Innodb_data_writes','Innodb_data_written'); 
+----------------------+--------------------+ 
| variable_name  | 0 - variable_value | 
+----------------------+--------------------+ 
| INNODB_DATA_READ  |   -6672384 | 
| INNODB_DATA_READS |    -422 | 
| INNODB_DATA_WRITES |    -22 | 
| INNODB_DATA_WRITTEN |   -333312 | 
| INNODB_ROWS_DELETED |     0 | 
| INNODB_ROWS_INSERTED |     -2 | 
| INNODB_ROWS_READ  |    -17 | 
| INNODB_ROWS_UPDATED |     0 | 
+----------------------+--------------------+ 
8 rows in set (0.00 sec) 

Теперь я хочу разницу между самым последним обновленным значением для INNODB_ROWS_INSERTED и его последнего значением.

Например, в приведенном выше примере значение INNODb_ROWS_INSERTED равно 2. Если я сделаю еще одну вставку и запустил этот запрос, обновленное значение будет равно 3. Теперь я хочу показать разницу, то есть 1 в новой таблицы или файла.

Благодаря

+0

Извлеките значение, сохраните его, загрузите, снова получите значение, сравните его. но обратите внимание, что эти значения SYSTEM-WIDE. если любые другие запросы выполняются параллельно, они также будут влиять на значения. –

ответ

0

Остерегайтесь Observer effect.

План A: Поместите исходные значения в таблицу темп, но убедитесь, что это не таблица InnoDB. После теста JOIN запрос information_schema, чтобы получить разницу.

План B: использовать SHOW GLOBAL STATUS LIKE 'Innodb%' до и после; проанализировать вывод (в, скажем, PHP); возьмите разницы. Похоже, что SHOW с меньшей вероятностью подвержен эффекту Наблюдателя. Но кодирование более неуклюжие.

План C (не будет работать для этихSTATUS значения): FLUSH STATUS нулей из некоторыхSTATUS значения. Сделайте это перед тестом, затем используйте SHOW SESSION STATUS LIKE '...'. (Обратите внимание на использование SESSION.) Это хорошо работает для LIKE 'Handler%', что я считаю полезным в том, чтобы копаться в том, как работают запросы и как быстро или медленно они работают.

Смежные вопросы