вторник, 16 февраля 2016 г.

Системные вызовы при коннекте к БД Postgres из PHP

Symfony

1455554851.464383 sendto(6, "P\0\0\0z\0SELECT t0.name AS name_1, t0.number AS number_2, t0.id AS id_3 FROM bench_data t0 WHERE t0.num"..., 168, MSG_NOSIGNAL, NULL, 0) = 168 <0.000023>
1455554851.464435 poll([{fd=6, events=POLLIN|POLLERR}], 1, 4294967295) = 1 ([{fd=6, revents=POLLIN}]) <0.000278>
1455554851.464744 recvfrom(6, "1\0\0\0\0042\0\0\0\4T\0\0\0Q\0\3name_1\0\0\0bB\0\2\0\0\4\23\377\377\0\0\1\3\0\0number_2\0\0\0bB\0\3\0\0\0\27\0\4\377\377\377\377\0\0id_3\0\0\0bB\0\1\0\0\0\27\0\4\377\377\377\377\0\0D\0\0\0006\0\3\0"..., 16384, 0, NULL, NULL) = 167 <0.000010>

Yii

1455554340.049263 sendto(6, "P\0\0\0Ipdo_stmt_00000001\0SELECT * FROM \"bench_data\" WHERE \"number\"=$1\0\0\1\0\0\0\0S\0\0\0\4", 79, MSG_NOSIGNAL, NULL, 0) = 79 <0.000040>
1455554340.049454 poll([{fd=6, events=POLLIN|POLLERR}], 1, 4294967295) = 1 ([{fd=6, revents=POLLIN}]) <0.000061>
1455554340.049617 recvfrom(6, "1\0\0\0\4Z\0\0\0\5I", 16384, 0, NULL, NULL) = 11 <0.000087>

pgbench

1455559601.087593 sendto(12, "T\0\0\0!\0\1abalance\0\0\0b\240\0\3\0\0\0\27\0\4\377\377\377\377\0\0D\0\0\0\v\0\1\0\0\0\0010C\0\0\0\rSELECT 1\0Z\0\0\0\5I", 66, 0, NULL, 0) = 66 <0.000104>
1455559601.087742 recvfrom(12, "Q\0\0\0\20DISCARD ALL\0", 8192, 0, NULL, NULL) = 17 <0.000375>

Выводы

В пых коннекте вставлен системный вызов poll для ожидания завершения работы сокета. Наверно поэтому PDO коннекторы работают хуже чистого подключения. И еще у pgbench используется другой сокет (id = 12), в то время как yii и symfony используют один и тот же (id = 6)

Комментариев нет:

Отправить комментарий