tag:blogger.com,1999:blog-654279083390275842.post1677482393096303550..comments2024-03-19T12:22:43.654+03:00Comments on Размышлизмы eao197: [prog] Слоистость, мать ее!eao197http://www.blogger.com/profile/17283739752119445290noreply@blogger.comBlogger3125tag:blogger.com,1999:blog-654279083390275842.post-68742691878638015412011-12-03T15:34:12.521+03:002011-12-03T15:34:12.521+03:00В реальной программе все несколько сложнее. Там да...В реальной программе все несколько сложнее. Там данные запихиваются во временную таблицу, затем выполняется несколько действий. И все это работает неожиданно не быстро. Например, на одном из шагов нужно вычитывать преобразованное содержимое временной таблицы. И чтение это идет слишком долго. Тестовый пример просто является синтетическим тестом для этого шага.<br /><br />Понятно, что теперь нужно оценивать, где притормаживает сам сервер, где сеть, где промежуточные слои (в виде ODBC, OTL). Просто когда изначально видишь результаты замеров, то недоуменно разводишь руками -- столько уровней абстракции, и каждый вносит какую-то свою лепту.<br /><br />PS. На счет "родной" библиотеки для доступа к MSSQL никогда не слышал. Про аналогичные вещи для MySQL, Postgres, Oracle знаю. А вот для MSSQL-я... Вроде были только какие-то ADO-шные интерфейсы. Но это COM, и хрен знает, насколько все это эффективнее простого ODBC.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-19217783437356361342011-12-02T20:40:12.040+03:002011-12-02T20:40:12.040+03:00Еще одно замечание. Насколько тестовая программа с...Еще одно замечание. Насколько тестовая программа соответствует тому, что происходит в реальном приложении? Наверняка ты не грузишь всю временную таблицу из базы. Если нужна только одна строка, то имеет смысл явно указать LIMIT 1 в запросе, у базы будет больше информации для оптимизации. В тестовой программе LIMIT не укажешь...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-40678642571665255212011-12-02T20:22:37.032+03:002011-12-02T20:22:37.032+03:00Я че-то не пойму. С MSSQL сервером нельзя разве об...Я че-то не пойму. С MSSQL сервером нельзя разве общаться напрямую, по его протоколу, использую libMsSQL.so, чтобы не было лишних прослоек? Так умеет любой SQL сервер, что MySQL, что SQLite, что Postgres. Если промежуточные прослойки в виде разных ORM мешают работать быстро, то подключаешься напрямую и получаешь максимум того, что сервер БД может дать.<br /><br />Кстати, из консоли MsSQL пробовал делать селекты? Те же времена или все супербыстро? Причем консоль лучше запустить на сервере БД и на локальной машине, чтобы проверить влияние сети. Если из консоли тоже все будет тормозить, я бы наваял вложенную процедуру, которая будет делать селект и возвращать свое время работы, чтобы уж совсем кроме самой базы данных на время выборки никто не влиял.<br /><br />P.S. Тут недавно новость читал, что Microsoft выпустил в очередной раз драйвер-библиотеку под RedHat Linux для подключения к MsSQL серверу. :) Причем в бинарном виде, т.е. только для РедХата и подойдет и разобраться на каком уровне тормоза без доступа к исходникам тоже не получиться.<br /><br />P.P.S. Толковый разговор получается для пятницы вечера. :)Anonymousnoreply@blogger.com