SQLite на 500К записей
7132 сообщения
#10 лет назад
ПриветствуюЕсть база SQLite. У зака она на 500 метров. Там несколько таблиц.
Было 3 таблицы с основными данными - объект учета один, но разные статусы.
Перенос из статуса в статус означало инсерт в новую таблицу и делит в старой.
На его данных работало медленно. Даже при пакетных вставках.
Решил оптимизировать - объединить 3 таблицы в одну и перенос из статуса в статус сделал простым апдейтом поля "статус".
На больших объемах переноса тормозит.
Может кто-то знает, как можно эту часть оптимизировать?
402 сообщения
#10 лет назад
О! shapod вернулся. гы-гы ) - поле "статус" - индекс? если нет, сделать индексом;
- база такая большая из-за количества записей или там файлы хранят? если второе, то хранить только ссылки;
- позволяет ли логика разбить на несколько таблиц (т.е. на "архивные" данные и текущие/актуальные ) ? Так понимаю - это бухгалтерия какая-то - что если их разбивать помесячно и работать только с актуальными записями;
7132 сообщения
#10 лет назад
Ага. вернули 
статус - не индекс. подправлю
записей просто дофига
нет. это не бухгалтерия.
там учет определенных объектов. у объектов 3 статуса - новые, обработанные, выгруженные.
раньше было под каждый статус отдельная таблица. но перенос очень долгий был, даже с транзакциями
решил сделать одной таблицей. тормоза уменьшились, но не настолько
переход на нормальную СУБД зак не хочет
попробую индекс поставить
402 сообщения
#10 лет назад
Т.е. записи обновляются не все сразу, а по какому то полю (дата, еще_какой-то_статус) По ним идет выборка, и у них обновляется поле "статус"?Вот эти поля в первую очередь должны быть индексами
7132 сообщения
#10 лет назад
Ок. спасибопопробую. да, там 3 поля фигурируют в условии WHERE
помогло. правда, на импорте данных в БД потери получил, но это не так страшно
218 сообщений
#10 лет назад
А можно нескромный вопрос... какое отношение индексирование поля status имеет к ускорению операции update записи?
402 сообщения
#10 лет назад
TigerDesign, уже никакого, другие проиндексировали, по которым выборка ведется
7132 сообщения
#10 лет назад
Статус тоже проиндексирован.мне же нужно поднимать статус только для тех, у которых он ниже уровня. а остальные ключевые поля могут и совпадать.
получилось 4 индекса (в ходе отладки кода наткнулся еще на одно условие). файл вырос в 2 раза.
может наконец заказчик созреет на MS SQL или MySQL
сейчас база 1Г. и это еще не полное ее наполнение, как я понял.
16382 сообщения
#10 лет назад
Цитата (shapod):может наконец заказчик созреет на MS SQL или MySQLЯ думаю если перспективы очертить, то созреет. Если с головой дружит. А если нет, то в случае возникновения проблем в процессе эксплуатации можно оказаться крайним
7132 сообщения
#10 лет назад
Изначально было вообще на Accessникто не предупредил, что там будет столько данных
начались тормоза. я предложил перегнать на MS SQL. он согласился. перегнал. сделал инструкцию по установке и прочему
сказал, что сложно. и сам предложил SQLite. перед этим я уже делал одному систему с этой субд. ну, там было 100-200 К записей и немного иной режим работы.
перегнал. у меня на тестах все быстро работало.
у зака тормоза.
попросил его БД. прислал 500 Метров
