B.1. Интерпретация данных даты и времени
Строки с датой/временем разбираются при вводе по следующему алгоритму.
Разделить входную строку на фрагменты и определить каждый фрагмент как строку, время, часовой пояс или цифру.
Если числовой фрагмент содержит двоеточие (
:
), значит эта строка представляет время. Включаются все последующие цифры и двоеточия.Если числовой фрагмент содержит тире (
-
), косую черту (/
) или две и более точек (.
), то это строка даты, которая, возможно, включает название месяца. Если фрагмент даты уже встречался, он интерпретируется как название часового пояса (например,America/New_York
).Если этот фрагмент является лишь числом, он представляет собой отдельное поле или составную дату ISO 8601 (например,
19990113
для 13 января 1999 года) или время (например,141516
для 14:15:16).Если фрагмент начинается с плюса (
+
) или минуса (-
), то это или числовой часовой пояс или специальное поле.
Если фрагмент содержит только буквы, сопоставить его с возможными строками:
Проверить, не совпадает ли фрагмент с известной аббревиатурой часового пояса. Эти аббревиатуры считываются из файла конфигурации, описанного в Разделе B.4.
Если фрагмент не найден, проверить во внутренней таблице, не совпадает ли он со специальной строкой (например,
today
), днём недели (например,Thursday
), месяцем (например,January
) или игнорируемым словом (например,at
,on
).Если фрагмент всё же не найден, выдать ошибку.
Когда фрагмент является числом или числовым полем:
Если получено восемь или шесть цифр и никакое другое поле даты ранее не было прочитано, интерпретировать их как «составленную дату» (например,
19990118
или990118
). Такая дата интерпретируется какГГГГММДД
илиГГММДД
.Если фрагмент представляет собой трёхзначное число, и год уже был прочитан, интерпретировать как день года.
Если это четыре или шесть цифр и год уже был прочитан, интерпретировать как время (
ЧЧММ
илиЧЧММСС
).Если найдены три или более цифр, а поля даты ещё не были найдены, интерпретировать как год (это ведёт к установке порядка гг-мм-дд для оставшихся полей даты).
В противном случае подразумевается, что порядок сортировки полей даты определяется значением
DateStyle
: мм-дд-гг, дд-мм-гг или гг-мм-дд. Выдать ошибку, если оказалось, что поле месяца или дня вышло за пределы диапазона.
Если указан год до н. э., отнять год и добавить единицу для внутреннего хранения. (В григорианском календаре отсутствует нулевой год, поэтому 1 год до н. э. становится нулевым.)
Если год до н. э. не был указан, и если поле года имело два разряда, установить для записи года четыре разряда. Если поле меньше 70, добавить 2000, в противном случае добавить 1900.
Подсказка
Годы с 1 по 99 н. э. по григорианскому календарю могут вводится при помощи четырёхзначного числа с начальными нулями (например,
0099
это год 99 н. э.).
18.9. Run-time Statistics
18.9.1. Query and Index Statistics Collector
These parameters control server-wide statistics collection features. When statistics collection is enabled, the data that is produced can be accessed via the pg_stat
and pg_statio
family of system views. Refer to Chapter 27 for more information.
track_activities
(boolean
)Enables the collection of information on the currently executing command of each session, along with the time when that command began execution. This parameter is on by default. Note that even when enabled, this information is not visible to all users, only to superusers, roles with privileges of the
pg_read_all_stats
role and the user owning the sessions being reported on (including sessions belonging to a role they have the privileges of), so it should not represent a security risk. Only superusers can change this setting.track_activity_query_size
(integer
)Specifies the number of bytes reserved to track the currently executing command for each active session, for the
pg_stat_activity
.query
field. The default value is 1024. This parameter can only be set at server start.track_counts
(boolean
)Enables collection of statistics on database activity. This parameter is on by default, because the autovacuum daemon needs the collected information. Only superusers can change this setting.
track_io_timing
(boolean
)Enables timing of database I/O calls. This parameter is off by default, because it will repeatedly query the operating system for the current time, which may cause significant overhead on some platforms. You can use the pg_test_timing tool to measure the overhead of timing on your system. I/O timing information is displayed in pg_stat_database, in the output of EXPLAIN when the
BUFFERS
option is used, and by pg_stat_statements. Only superusers can change this setting.track_functions
(enum
)Enables tracking of function call counts and time used. Specify
pl
to track only procedural-language functions,all
to also track SQL and C language functions. The default isnone
, which disables function statistics tracking. Only superusers can change this setting.Note
SQL-language functions that are simple enough to be “inlined” into the calling query will not be tracked, regardless of this setting.
stats_temp_directory
(string
)Sets the directory to store temporary statistics data in. This can be a path relative to the data directory or an absolute path. The default is
pg_stat_tmp
. Pointing this at a RAM-based file system will decrease physical I/O requirements and can lead to improved performance. This parameter can only be set in thepostgresql.conf
file or on the server command line.
18.9.2. Statistics Monitoring
log_statement_stats
(boolean
)log_parser_stats
(boolean
)log_planner_stats
(boolean
)log_executor_stats
(boolean
)For each query, output performance statistics of the respective module to the server log. This is a crude profiling instrument, similar to the Unix
getrusage()
operating system facility.log_statement_stats
reports total statement statistics, while the others report per-module statistics.log_statement_stats
cannot be enabled together with any of the per-module options. All of these options are disabled by default. Only superusers can change these settings.