SQL запрос в SQLite - страница 13

 
prostotrader #:

Я не сам подключаюсь к базе, а посредством FireDAC, если что-то в Марии будет не так,

то нормально работать не будет.

Для приложения обычно нет разницы, MariaDB или MySQL.

prostotrader #:

Я почитал сравнение MySQL и PostgreQSL и понятно, что в этом выборе

  PostgreQSL - однозначно! 

Только не забывать, что это версионник и там есть такие вещи, как вакуум и автовакуум.

Мне на одной работе приходилось отключать автовакуум на рабочее время и делать ночью некоторым таблицам принудительный vacuum full.

 
Maxim Kuznetsov #:

собственно "давно обещанное большевиками случилось" :-(

а именно файловые блокировки

Режима когда их нет - НЕТ.

Возможны некоторые обходные пути, которые могут временно помочь (именно временно, потом всё равно те-же грабли):

* перенесите базу в RAM-диск

* у вас множество хендлов к базе - разделите кому не надо писать пусть будет read-only

* отключите auto-commit, оберните все запросы в TRANSACTION, а COMMIT/ROLLBACK вызывайте самостоятельно и обрабатывайте ошибки (повторы, переподключения, etc)

* как самый крайний случай добавьте RW-Mutex ко всем запросам. Это убьёт скорость напрочь (всё равно что однопоточно), но зато блокировки будут на уровень выше и не вызовут краха.

а вообще надо смотреть на другие базы пока не поздно.

из встраиваемых в приложения (не требующих отдельного сервера) и более менее близких с SQLite есть:

* monetdb/e https://www.monetdb.org/ - сильно быстрее SQLite, но в многопотоке не пробовал.

* FireBird https://firebirdsql.org/ - традиционно любимая бухгалтерами :-)

или брать знакомое зло в виде Postgresql , MySQL 


Я бы взял конечно MSSQL  

могу поделиться самой свежей  от 2022 - с ключиком
 
JRandomTrader #:

Для приложения обычно нет разницы, MariaDB или MySQL.

Только не забывать, что это версионник и там есть такие вещи, как вакуум и автовакуум.

Мне на одной работе приходилось отключать автовакуум на рабочее время и делать ночью некоторым таблицам принудительный vacuum full.

я бы предложил MSSQL 

 
prostotrader #:

Я не сам подключаюсь к базе, а посредством FireDAC, если что-то в Марии будет не так,

то нормально работать не будет.

Я почитал сравнение MySQL и PostgreQSL и понятно, что в этом выборе

  PostgreQSL - однозначно! 

Добавлено

Я выбрал SQLite по нескольким причинам:

1. Она есть в списке FireDAC

2. Достаточно быстрая

3. Простая в "разворачивании"

4. Программа для Плаза 2 должна проходить сертификацию 

и "танцы с бубном" им (проверяющим) совсем не нужны 


Почитайте разницу между MS SQL и PostgreQSL 

недавно переносил не очень большую базу порядка 100 ггб  из PostgreQSL   в MSSQL

Скорость выросла , еще  пока были на  PostgreQSL   - часто случались "метрвые объятия" блокировки - после перехода на MS SQL  ушло как явление.

Ну это как перейти с жигули на мерседес.

 
Yuriy Zaytsev #:


Почитайте разницу между MS SQL и PostgreQSL 

недавно переносил не очень большую базу порядка 100 ггб  из PostgreQSL   в MSSQL

Скорость выросла , еще  пока были на  PostgreQSL   - часто случались "метрвые объятия" блокировки - после перехода на MS SQL  ушло как явление.

Ну это как перейти с жигули на мерседес.

Сдаётся мне, вы его неправильно готовили.

 
JRandomTrader #:

Сдаётся мне, вы его неправильно готовили.

До просто обычная  практика , по которой MSSQL в реальности дал лучший результат.

Берем две базы  полностью одинаковые , на одном и том же железе, и пробуем добиться лучших результатов на  PostgreQSL   и  MSSQL , перебирая изучая меняя  все настройки.

При всех равных услових в железе , MSSQL  дал лушие результаты в скорости. Еще подчеркиваю ( не я писал часть кода который вызывал Deadlock , вопрос конечно тонкий искать подобные фишки  )  но после перехода на MSSQL ушли  ко всему прочему и Deadlock.


для начала сравним совсем отвлеченную фишку делаем backup  100 ггб  базу  ( подчеркиваю на одном и том же железе  )

1) PostgreSQL , на удивление 2 часа.

2)  MSSQL   ,  идет полторы минуты.

Но это так , мелочи в срвнении с остальными плюшками. 

Кстати 4 тб базу не пробовали бэкапить на   PostgreSQL  , а на MSSQL ?

Но сравнивать конечно лучше на запросах , например  из таблицы в два миллирда записей.

 

дополню - разные мелочи от практиков

запустил замер производительности, в постри работает тормознее..
постри:
запись документов 132,73 сек. 41%
удаление 95,22 сек. 30%
мс скл:
запись 82,2 сек. 36%
удаление 78,6 сек. 35%

 

https://habr.com/ru/articles/457602/

Еще немного о разнице между жигулями и мерседесом.


...ключевые выжимкм из статьи 

в общем синтетическом тесте СУБД PostgreSQL проиграла по производительности СУБД MS SQL в среднем на 14,82%.

Исходя из этого, можно сделать более вероятное предположение, что 1С версии 8.3 и новее можно перенести с MS SQL на PostgreSQL с максимальной потерей производительности до 15%.

тут правда версия MSSQL староенькая  13.0.5264.1 - интересно что поазала бы 16


Будете утвержать и далее , типа   спецы которые проводили тесты не умеют "готовить кошек"  :-)  ?

Исследование быстродействия СУБД MS SQL Server Developer 2016 и PostgreSQL 10.5 для 1С
Исследование быстродействия СУБД MS SQL Server Developer 2016 и PostgreSQL 10.5 для 1С
  • 2019.06.30
  • habr.com
Основной целью проводимого тестирования является сравнение поведения системы 1С на двух разных СУБД при прочих одинаковых условиях. Т.е. конфигурация баз данных 1С и первоначальная заполненность данными должны быть одинаковыми при проведении каждого тестирования. Основными параметрами, которые должны быть получены при тестировании: Время...
 
Yuriy Zaytsev #:

https://habr.com/ru/articles/457602/

Еще немного о разнице между жигулями и мерседесом.


...ключевые выжимкм из статьи 

в общем синтетическом тесте СУБД PostgreSQL проиграла по производительности СУБД MS SQL в среднем на 14,82%.

Исходя из этого, можно сделать более вероятное предположение, что 1С версии 8.3 и новее можно перенести с MS SQL на PostgreSQL с максимальной потерей производительности до 15%.

тут правда версия MSSQL староенькая  13.0.5264.1 - интересно что поазала бы 16


Будете утвержать и далее , типа   спецы которые проводили тесты не умеют "готовить кошек"  :-)  ?

в целом, при работе с 1С 

MSSQL рвёт Postress как тузик грелку.

Иных баз которые таскают то в Pg то в Ms просто не существует..

А есть ещё Oracle, который умеет трепать обоих их :-)

Но ТС хочет базу не накладывающую ограничений (или доп.роялти) на потенциальных пользователей.  Поэтому MSSQL пролетает

 
Maxim Kuznetsov #:

в целом, при работе с 1С 

MSSQL рвёт Postress как тузик грелку.

Иных баз которые таскают то в Pg то в Ms просто не существует..

А есть ещё Oracle, который умеет трепать обоих их :-)

Но ТС хочет базу не накладывающую ограничений (или доп.роялти) на потенциальных пользователей.  Поэтому MSSQL пролетает


Верно , МS SQL будет получше чем postgeesql