2012-05-04 8 views
1

Я немного экспериментирую с базами данных. В этом случае каждый запрос выбирает все из одной таблицы таблиц TPCH (select * from table;). До и после каждого запроса я разбираю /proc/[pid]/io, где [pid] - это процесс базы данных. Разница этих значений должна рассказать мне об IO запроса. Это типичный выход для MySQL (секунды, MB):Откуда берутся операции записи?

 Query   time   RCHAR  WCHAR READ_BYTES WRITE_BYTES CANCELLED_WB 
query1.sql|  0.005|  0.00234|  0.00245|  0.00391|  0.00000|  0.00000 
query2.sql|  0.008|  0.00043|  0.00058|  0.00391|  0.00000|  0.00000 
query3.sql|  0.041|  1.37217|  1.37296|  1.37891|  0.00000|  0.00000 
query4.sql|  0.270|  23.41719| 23.64796| 23.44531|  0.00000|  0.00000 
query5.sql|  0.346|  23.43413| 23.58974| 23.46484|  0.00000|  0.00000 
query6.sql|  1.413|  113.77629| 115.76173| 113.89453|  0.00000|  0.00000 
query7.sql|  1.792|  140.49537| 168.27847| 140.64062|  0.00000|  0.00000 
query8.sql|  8.847|  614.04820| 759.00238| 614.65625|  0.00000|  0.00000 
    Overall|  12.738|  916.54611| 1091.65626| 917.48828|  0.00000|  0.00000 

Интересно, где WCHAR (запись символьные) значения берутся. Мои запросы «все прочитают» вместо «написать что-нибудь» (так как «WRITE_BYTES» имеет значение NULL, на самом деле нет записи на диск, а записывается в cache/buffer?). Что мне здесь не хватает?

ответ

1

Я думаю, что TTY io (и, возможно, сетевое взаимодействие?) Входит в WCHAR, но WRITE_BYTES учитывает только страницы, записанные на диск.

+0

Я вижу. Таким образом, MySQL читает данные (RCHAR), обрабатывает его и представляет результаты в сокет, терминал (это то, что вы подразумеваете под tty?) Или TCH/IP-соединение (WCHAR)? Поэтому я должен попытаться измерить эти шаги ... – lupz