Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26109
Рейтинг: 2124
#91: 2007-06-18 02:27:30 ЛС | профиль | цитата
Скорость поиска по базе не более 2-4 сек, но дополнительным приложением -- ListEvent. В момент поиска оно не синхронизируется с главным приложением и теряет данные, но я предусмотрел дочитывание потерянных данных из базы за то время, пока производился поиск. В одном приложении это делать не реально -- главное приложение никогда не должно ничем тормозиться, иначе, будет потеря данных, а это -- недопустимо.
карма: 22

0
Ответов: 1891
Рейтинг: 110
#92: 2007-06-18 02:33:52 ЛС | профиль | цитата
А главное приложение не тормозит?
карма: 0
%time%
0
Разработчик
Ответов: 26109
Рейтинг: 2124
#93: 2007-06-18 03:15:20 ЛС | профиль | цитата
Alexbootch, нет, оно записывает всего одну последнюю запись -- для чего мне и нужен был быстрый поиск последней строки. Минимальное время за которое можно записать составляет 5 мсек Х кол. каналов. Минимум получается три канала -- 15 мсек (при наших таймерах около 100). Вроде, успевает, но на такой скорости я не проверял. Реальная скорость для 50000 тысяч событий около 0.5 сек -- этого за глаза хватит (предел декодирования событий в оборудовании 0.4 сек).
карма: 22

0
Ответов: 1891
Рейтинг: 110
#94: 2007-06-18 13:08:49 ЛС | профиль | цитата
Значит все работает нормально
карма: 0
%time%
0
Разработчик
Ответов: 26109
Рейтинг: 2124
#95: 2007-06-18 14:29:02 ЛС | профиль | цитата
Alexbootch, концепция работает Ok. Вот кто-то пожирает память в цикле. Сейчас веду охоту на пожирателя.
карма: 22

0
Ответов: 1891
Рейтинг: 110
#96: 2007-06-18 14:35:31 ЛС | профиль | цитата
nesco, писал(а):
Alexbootch, концепция работает Ok. Вот кто-то пожирает память в цикле. Сейчас веду охоту на пожирателя.


nesco, а трансзакции не использовал?
карма: 0
%time%
0
Разработчик
Ответов: 26109
Рейтинг: 2124
#97: 2007-06-18 14:44:19 ЛС | профиль | цитата
Alexbootch писал(а):
nesco, а трансзакции не использовал

Подробнее можно. Я вроде читал, что SQLite автоматически включает транзакцию при запросах, поэтому я их не использовал. Какие будут рекомендации? Необходимо каждый запрос оформить транзакциями, или нет?
карма: 22

0
Ответов: 1891
Рейтинг: 110
#98: 2007-06-18 14:57:13 ЛС | профиль | цитата
nesco, писал(а):
Подробнее можно. Я вроде читал, что SQLite автоматически включает транзакцию при запросах, поэтому я их не использовал. Какие будут рекомендации? Необходимо каждый запрос оформить транзакциями, или нет?


Значит не использовал. В принципе транзакции могут тормозить и, соответственно, пожирать память, когда сам пишешь транзакцию для вставки большого количества данных используя такую конструкцию:
BEGIN TRANSACTION;
INSERT INTO ...
COMMIT;
BEGIN TRANSACTION;
INSERT INTO ...
COMMIT;
BEGIN TRANSACTION;
INSERT INTO
COMMIT;



nesco, а DATETIME колонка как у тебя назвается?
карма: 0
%time%
0
Разработчик
Ответов: 26109
Рейтинг: 2124
#99: 2007-06-18 15:00:33 ЛС | профиль | цитата
Alexbootch писал(а):
nesco, а DATETIME колонка как у тебя как назвается?

Я ее назвал date, а что, это -- принципиально?
карма: 22

0
Ответов: 1891
Рейтинг: 110
#100: 2007-06-18 15:07:47 ЛС | профиль | цитата
nesco, писал(а):
Я ее назвал date, а что, это -- принципиально.


Вообще-то да, т.к. date, time, datetime - являются также зарезервированными словами в SQL. Попробуй изменить название колонки, например на dat
карма: 0
%time%
0
Разработчик
Ответов: 26109
Рейтинг: 2124
#101: 2007-06-19 18:06:28 ЛС | профиль | цитата
Alexbootch, скажи вот такой запрос
SELECT channel AS Кан, id AS Поз, dat AS Дата FROM Event;
действует на постоянно, или только на одну транзакцию. И можно потом обратиться например, вот так:
SELECT Кан FROM Event WHERE rowid = 1

карма: 22

0
Разработчик
Ответов: 26109
Рейтинг: 2124
#102: 2007-06-19 22:29:48 ЛС | профиль | цитата
Такой запрос, вроде, работает, но выдает всю колонку.
карма: 22

0
Ответов: 1891
Рейтинг: 110
#103: 2007-06-20 01:54:10 ЛС | профиль | цитата
nesco, писал(а):
Alexbootch, скажи вот такой запрос
SELECT channel AS Кан, id AS Поз, dat AS Дата FROM Event;


действует на постоянно, или только на одну транзакцию. И можно потом обратиться например, вот так:

SELECT Кан FROM Event WHERE rowid = 1




nesco, SELECT channel AS Кан, id AS Поз, dat AS Дата FROM Event; - это всего лишь вивод колонок channel, id и dat как Кан, Поз и Дата и не более того, т.е. для удобства представления таблица при выводе результата запроса через SELECT

По стандарту SQL нужно (во избежания всякого рода ошибок) писать так:

SELECT channel AS "Кан", id AS "Поз", dat AS "Дата" FROM Event;


В данном случае, запрос вида SELECT Кан FROM Event WHERE rowid = 1 не может быть обработан, т.к. столбца Кан в таблице Event просто-напросто не существует.
карма: 0
%time%
0
Разработчик
Ответов: 26109
Рейтинг: 2124
#104: 2007-06-20 02:25:36 ЛС | профиль | цитата
Alexbootch писал(а):
столбца Кан в таблице Event просто-напросто не существует

Значит, псевдонимы столбцов при запросах не катят, я правильно понял?
карма: 22

0
Ответов: 1891
Рейтинг: 110
#105: 2007-06-20 02:38:41 ЛС | профиль | цитата
nesco, писал(а):
Значит, псевдонимы столбцов при запросах не катят, я правильно понял?


Да, правильно понял. Хотя в представленияx могут и катить
карма: 0
%time%
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)