metaclass (metaclass) wrote,
metaclass
metaclass

char[16] vs integer

http://theiced.livejournal.com/272594.html
Тестирую утверждение айседа, что разницы - делать состояние в виде числа или строки нет.
Пока, на таблице из трех полей (PK bigint, State (char[16]/integer), Value numeric(18,4)) с 1 млн записей в Firebird - разница в размере таблицы 16%, в размере индекса по State - 1%
Скорость вставки тоже достаточно однохренственная.
Запустил еще тесты на Postgresql, к утру посмотрим, что получится, если раньше диск не сдохнет.
Разница по вставке миллиона записей в Postgresql: 4:35 для строк, 4:16 для чисел, около 7%. Надо будет несколько раз замерять, а то я всему этому не верю.
Внутри файлов индекса postgresql - для char[16] лежит 32 байта на запись, для int - 16 байт на запись
Похоже, придется изучать все таки реальный объем i/o для обоих случаев при запросах.
На данный момент, для postgresql и 11 млн записей:
строки: Таблица 650 Мб, PK 240 Мб, индекс по строковому полю 524 Мб.
числа: Таблица 554 Мб, PK 240 Мб, индекс по численному полю 302 Мб.
Скорость вставки отличается незначительно, 10 млн - 40:39 для строк и 40:18 для чисел. Пока индексы вмещаются в кэш в памяти, видимо, отличий больших не будет.
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 41 comments