powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Время с точностью до милисекунд?
19 сообщений из 19, страница 1 из 1
Время с точностью до милисекунд?
    #33557575
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как мне залогировать для отладки время с точностью до милисекунд?

Пишу вот так:

insert into trace_table select DBINFO('utc_to_datetime', sh_curtime), 'Procedure. Step 1.1.' from SysMaster:SysShmVals;

Таблица следующего вида:

create table trace_table (dt DateTime Year to second , txt varchar(100));
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33557775
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров АндрейТаблица следующего вида:

create table trace_table (dt DateTime Year to second , txt varchar(100));
сделать таблицу

create table trace_table (dt DateTime Year to fraction , txt varchar(100));
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33557896
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров АндрейКак мне залогировать для отладки время с точностью до милисекунд?

Пишу вот так:

insert into trace_table select DBINFO('utc_to_datetime', sh_curtime), 'Procedure. Step 1.1.' from SysMaster:SysShmVals;

Таблица следующего вида:

create table trace_table (dt DateTime Year to second , txt varchar(100));
Йо, а что в SysMaster:SysShmVals.sh_curtime с большей точностью, чем секунда? Какая версия Информикса?
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558029
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да Fraction я уже сам нарыл в доке.

А вот насчет того как узнать это время незнаю.

Использую DBINFO('utc_to_datetime', sh_curtime) вместо Current потому что Current в одной процедуре дает одно и то же значение.

Подскажите как узнать время до миллисекунд внутри одной процедуры?

Версия : Informix Dynamic Server Version 7.31.UD4
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558095
zefs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Петров АндрейДа Fraction я уже сам нарыл в доке.

А вот насчет того как узнать это время незнаю.

Использую DBINFO('utc_to_datetime', sh_curtime) вместо Current потому что Current в одной процедуре дает одно и то же значение.

Подскажите как узнать время до миллисекунд внутри одной процедуры?

Версия : Informix Dynamic Server Version 7.31.UD4


Петров Андрей
...
select DBINFO('utc_to_datetime', sh_curtime) from SysMaster:SysShmVals
...


собственно так в процедуре и получете текущее время. Сами же ответили на свой вопрос:-)
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558105
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторсобственно так в процедуре и получете текущее время. Сами же ответили на свой вопрос:-)

Читайте внимательнее... Оно возвращает до секунд а мне надо до миллисекунд.
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558266
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров АндрейОно возвращает до секунд а мне надо до миллисекунд.
В ONCONFIG есть параметр USEOSTIME, который по умолчанию установлен в 0.
В этом случае используется внутренний таймер IDS (для многих нужд, а не только для возврата времени функциям SQL, поэтому с ним движок работает быстрее) и он возвращает время округленное до секунд.
Если USEOSTIME установить в 1, то точность временных функций уже будет зависеть от OS и платформы и редко превышает тысячные доли секунды.
Следует заметить, что ранее на платформе Windows на некоторых версиях IDS установка USEOSTIME =1 приводила к проблемам (появлялись баги в работе некоторых функций), да и получить милисекунды все равно не удавалось.
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558302
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо. Тогда 2 вопроса:

1) Как это сделать - задать этот параметр = 1
2) И что будет если я его буду до Insert-а выставлять в 1 а после убирать в 0? :-) Система не упадет :-)
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558432
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров АндрейХорошо. Тогда 2 вопроса:

1) Как это сделать - задать этот параметр = 1
2) И что будет если я его буду до Insert-а выставлять в 1 а после убирать в 0? :-) Система не упадет :-)
параметр USEOSTIME вводится в действие при старте сервера.
И вам он все равно не поможет, раз вам неудобно пользоваться CURRENT
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558529
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. никак нельзя добиться точности в большей чем секунда?
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558539
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы милисекундные запросы в цикле точите? Нафига такая точность?
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558553
zefs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
create table trace_table
(dt DateTime Year to fraction(3) default current Year to fraction(3),
txt varchar(100));

drop procedure test_time;
create procedure test_time()

insert into trace_table (txt) values('Procedure. Step 1.1.');

--------------------------------------
end procedure;

это вам поможет.
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558568
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 zefs

И чем же мне это поможет? При выставленном USEOSTIME = 0?
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558579
zefs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Петров Андрей2 zefs

И чем же мне это поможет? При выставленном USEOSTIME = 0?

а что мешает выставить этот параметр, если вам так необходимы милисекудны?
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558602
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось бы увидеть еще варианты...
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558637
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров АндрейХотелось бы увидеть еще варианты...
Какие и чего ?
Вроде внятно объяснили, что без выставления параметра в onconfig вы никогда не получите от функций большую точность, чем секунда. Мало того, это вовсе не гарантия, что милисекунды все же будут - зависит от версии IDS, ОС и платформы.
Почитайте про аудит в информиксе - возможно там время более мелкое, только это трудоемкий вариант в любом случае ...
И потом, самое главное, не что и как использовать, а ДЛЯ ЧЕГО ?
Если объясните, для чего вам для отладки нужны милисекунды - возможно появятся новые варианты...
Следует заметить, что один и тот же запрос может выполняться разное время, которое зависит не только от загрузки сервера, и для отладки (точнее, тайминга разных частей тяжелой процедуры) желательно тестовое время выполнения в десятках секунд, а лучше в минутах (как в реальных условиях и на реальных данных :))
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558740
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо можно реализовать только через Datablade
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33558819
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Daugava

Приведите пожалуйста пример...
...
Рейтинг: 0 / 0
Время с точностью до милисекунд?
    #33559281
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имел ввиду, написать внешнюю процедуру на С, которая выполнит требуемые действия (вернет время с нужной точностью, например) или просто залогирует событие. Вот простейший пример использования EXTERNAL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
CREATE PROCEDURE
    do_syslog(priority integer, message lvarchar)
EXTERNAL NAME
    "/usr/informix/lib/logger.so(do_syslog)"
LANGUAGE C
END PROCEDURE;

create trigger "informix".proto_gyslog_trigger insert on "informix"
    .protocol referencing new as new
    for each row
        (
        execute procedure "informix".do_syslog( 5  ,new.user_name 
    || ':' || new.event || ':' || NVL (new.event_str ,'' )));


#include <syslog.h>
#include "mi.h"

/*
 * LOG_EMERG       0       system is unusable
 * LOG_ALERT       1       action must be taken immediately
 * LOG_CRIT        2       critical conditions
 * LOG_ERR         3       error conditions
 * LOG_WARNING     4       warning conditions
 * LOG_NOTICE      5       normal but signification condition
 * LOG_INFO        6       informational
 * LOG_DEBUG       7       debug-level messages
 */
void
do_syslog(mi_integer priority, void *message)
{
    mi_string *message_ptr = mi_lvarchar_to_string(message);

    if (message_ptr != NULL)
        syslog(priority, "%s", message_ptr);

    if (message_ptr != NULL)
        mi_free(message_ptr);
}
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Время с точностью до милисекунд?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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