Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Время с точностью до милисекунд? / 19 сообщений из 19, страница 1 из 1
21.02.2006, 10:31
    #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
21.02.2006, 11:28
    #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
21.02.2006, 12:02
    #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
21.02.2006, 12:36
    #33558029
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время с точностью до милисекунд?
Да Fraction я уже сам нарыл в доке.

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

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

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

Версия : Informix Dynamic Server Version 7.31.UD4
...
Рейтинг: 0 / 0
21.02.2006, 12:57
    #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
21.02.2006, 12:59
    #33558105
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время с точностью до милисекунд?
авторсобственно так в процедуре и получете текущее время. Сами же ответили на свой вопрос:-)

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

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

1) Как это сделать - задать этот параметр = 1
2) И что будет если я его буду до Insert-а выставлять в 1 а после убирать в 0? :-) Система не упадет :-)
параметр USEOSTIME вводится в действие при старте сервера.
И вам он все равно не поможет, раз вам неудобно пользоваться CURRENT
...
Рейтинг: 0 / 0
21.02.2006, 14:53
    #33558529
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время с точностью до милисекунд?
Т.е. никак нельзя добиться точности в большей чем секунда?
...
Рейтинг: 0 / 0
21.02.2006, 14:56
    #33558539
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время с точностью до милисекунд?
Вы милисекундные запросы в цикле точите? Нафига такая точность?
...
Рейтинг: 0 / 0
21.02.2006, 14:59
    #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
21.02.2006, 15:04
    #33558568
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время с точностью до милисекунд?
2 zefs

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

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

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

Приведите пожалуйста пример...
...
Рейтинг: 0 / 0
21.02.2006, 18:55
    #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
Форумы / Informix [игнор отключен] [закрыт для гостей] / Время с точностью до милисекунд? / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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