Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Точность времени / 7 сообщений из 7, страница 1 из 1
11.03.2016, 15:09
    #39190124
big-trot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Точность времени
Столкнулся с такой проблемой.
В документации сказано что для типа данных timestamp точность может быть определена до 6 знака после запятой включительно, т.е. до микросекунд.
Функции которые возвращают timestamp, например statement_timestamp(), имеют три знака после запятой.
Когда явно указываешь точность до 6 или пытаешься получить микросекунды - имеешь в 3-х младших разрядах всегда 0.
Например:
Код: sql
1.
select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6))



Результат - 52655000.

Вопрос. Каким образом, можно увидеть микросекунды отличные от нулей?

Postgres - 9.3.5 (64р), Windows.

Спасибо.
...
Рейтинг: 0 / 0
11.03.2016, 15:24
    #39190144
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Точность времени
big-trotВопрос. Каким образом, можно увидеть микросекунды отличные от нулей?
Занести их в поле самостоятельно.
...
Рейтинг: 0 / 0
11.03.2016, 15:41
    #39190155
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Точность времени
Dimitry Sibiryakov,

можно ещё с выни слезть

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
---Linux---
select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6))
	,EXTRACT(MICROSECONDS FROM statement_timestamp())
	,EXTRACT(MICROSECONDS FROM clock_timestamp())
	,version()
----------
35414786;35414786;35414919;'PostgreSQL 9.3.6 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52), 64-bit'

-------Win---------

select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6))
	,EXTRACT(MICROSECONDS FROM statement_timestamp())
	,EXTRACT(MICROSECONDS FROM clock_timestamp())
	,version()
----------
43458000;43458000;43458000;'PostgreSQL 9.4.1, compiled by Visual C++ build 1800, 32-bit'

...
Рейтинг: 0 / 0
11.03.2016, 15:42
    #39190157
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Точность времени
big-trot,
Вроде не всегда нули в трех младших разрядах.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
postgres=# select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6));
 date_part 
-----------
   8372396
(1 row)

postgres=# \echo :VERSION
PostgreSQL 9.4.4 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4, 64-bit
...
Рейтинг: 0 / 0
15.03.2016, 15:08
    #39192384
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Точность времени
Почитал внимательно release notes для версии 9.5 и увидел вот такую строчку:
Allow higher-precision time stamp resolution on Windows 8, Windows Server 2012, and later Windows systems (Craig Ringer)

Проверили на windows10 и pg9.5 - и вот результат:
Код: sql
1.
2.
3.
4.
postgres=# select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6));
 date_part
-----------
  27417771
...
Рейтинг: 0 / 0
15.03.2016, 15:23
    #39192409
grufos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Точность времени
big-trot,

В release notes для версии 9.5 есть вот такая строчка:
Allow higher-precision time stamp resolution on Windows 8, Windows Server 2012, and later Windows systems (Craig Ringer)

Проверил на windows 7 и 9.5 - и вот результат:
postgres=# select EXTRACT(MICROSECONDS FROM statement_timestamp()::timestamptz(6));
date_part
-----------
27417771
...
Рейтинг: 0 / 0
15.03.2016, 17:34
    #39192592
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Точность времени
Традиционные "тики" в винде имеют точность 3 миллисекунды. Нетрадиционные появились очень давно, но в популярных библиотеках долгое время популярностью не пользовались из-за нестабильности результатов.
https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx QPC support in Windows versions

QPC was introduced in Windows 2000 and Windows XP and has evolved to take advantage of improvements in the hardware platform and processors. Here we describe the characteristics of QPC on different Windows versions to help you maintain software that runs on those Windows versions.

Windows XP and Windows 2000
QPC is available on Windows XP and Windows 2000 and works well on most systems. However, some hardware systems' BIOS didn't indicate the hardware CPU characteristics correctly (a non-invariant TSC), and some multi-core or multi-processor systems used processors with TSCs that couldn't be synchronized across cores. Systems with flawed firmware that run these versions of Windows might not provide the same QPC reading on different cores if they used the TSC as the basis for QPC.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Точность времени / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]