TPS & SQL

Как-то несколько раз в данной рассылке обсуждались вопросы, связанные с переходом на SQL-базы. И, в частности, всегда довольно бурно обсуждался вопрос о скорости выборок и загрузке сети при использовании SQL-баз и других «локальных» драйверов.

Но, обсуждая все эти вопросы, мы почему-то всегда упускали из виду одну особенность TPS-драйвера, которая ОЧЕНЬ существенно влияет именно на сетевой трафик и, как следствие, на скорость выборки из TPS-таблиц! А именно — информация в TPS-таблицах ВСЕГДА хранится в сжатом виде! И, следственно, по сетке передается именно в сжатом виде.

Т.е. если, к примеру, имеем запись размером в 300 байт, то при обмене с сетевой базой по сетке «ганяются» не 300 байт а меньше. На некоторых записях эта разница может составлять разы! Приблизительно этот выигрыш можно оценить, зная что алгоритм сжатия TPS-таблиц подобен алгоритму сжатия записей очередей в новых версиях C50-C55. Т.е. ЛЮБЫЕ, подряд идущие, одинаковые байты заменяются на последовательность, состоящую из байта-образца и длины повторения этого образца.

Таким образом, если мы имеем в записи три текстовых поля длиной по 60 байт для хранения ФИО, то, в большинстве случаев, из этих 180 байт, как минимум, половина не будет использоваться. Кстати, это-же относится не только к текстовым полям! Такое сжатие распространяется на ЛЮБЫЕ одинаковые, подряд идущие, цепочки байт. Без разделения на поля.

Конечно, существенный выигрышь получаем только на текстовых полях. Но, как обычно, именно таблицы с текстовой инфой и имеют большие размеры записей. В то время, как прочие таблицы, которые используются для описания документов и их состава, а так-же для организации связей между другими таблицами, имеют записи сравнительно небольшого размера.

Так что, говоря о сетевом трафике при использовании TPS-баз, следует иметь в виду и это, немаловажное имхо, свойство. По крайней мере, когда речь идет о сравнительных характеристиках TPS-баз и других «локальных» баз.

Хотя я уже несколько раз замечал значительные отклонения от ожидаемого выигрыша в скорости при использовании SQL-баз по сравнению с TSP-базами. И именно на процессах массовой пересылки записей, без особенно сложных условий выборки. Все таки, в таких случаях, очевидно, сказывается именно тот факт, что от SQL-сервера записи идут в полном обьеме, а от TPS-баз эти-же записи идут в сжатом виде.