1

Тема: Postgresql, підключення та конкурентні запити

Добрий вечір. Є декілька питань по роботі з даною БД.
Нехай в мене є сервер, до котрого одночасно підключено 1000 гравців, вони роблять різні дії, котрі провокують чи то збереження інформації в БД, чи запитування інформації з БД.
Як мені організувати підключення до БД? Чи вистачить одного підключення, аби ганяти по ньому запити від 1000 користувачів?
Як бути, коли одночасно декілька користувачів хочуть змінити/видалити одні й ті ж самі дані?

2

Re: Postgresql, підключення та конкурентні запити

А в чому може бути проблема? В блокуванні решти запитів під час виконання одного, при великій кількості одночасних запитів?
Мабуть тут все впирається в потужність самого заліза, аби не "впало" взагалі.

Подякували: koala, ostap34PHP2

3

Re: Postgresql, підключення та конкурентні запити

Якщо я не помиляюся, транзакції з цим можуть впоратися. Я лише бачив мигцем схожі питання, сам с транзакціями ще не грався.

4

Re: Postgresql, підключення та конкурентні запити

Залежить від запитів. Одновиразні блокуються автоматично, складні треба транзакціями робити. Про швидкість - треба тестувати.
Знову ж таки, гравці безпосередньо до БД підключені чи до серверного додатку? Ви свою архітектуру не розкриваєте - то як можна щось сказати?

Подякували: 221VOLT, ostap34PHP2

5

Re: Postgresql, підключення та конкурентні запити

koala написав:

Залежить від запитів. Одновиразні блокуються автоматично, складні треба транзакціями робити. Про швидкість - треба тестувати.
Знову ж таки, гравці безпосередньо до БД підключені чи до серверного додатку? Ви свою архітектуру не розкриваєте - то як можна щось сказати?

до серверного додатку, звісно ж. Хто ж дає тисячам людей доступ до бд???

6

Re: Postgresql, підключення та конкурентні запити

є веб-аплікація (наприклад на Flask) , реалізовано API. Робота з базою через  SQLAlchemy.
як поведуть себе SQLite, MySQL , Postgresql у випадку, якщо , наприклад 100 запитів захочуть одночасно модифікувати одну таблицю?

7 Востаннє редагувалося iovchynnikov (04.06.2017 16:27:18)

Re: Postgresql, підключення та конкурентні запити

ping написав:

є веб-аплікація (наприклад на Flask) , реалізовано API. Робота з базою через  SQLAlchemy.
як поведуть себе SQLite, MySQL , Postgresql у випадку, якщо , наприклад 100 запитів захочуть одночасно модифікувати одну таблицю?

"Модифікувати одну таблицю" це дуже широке поняття. Зміна одного рядка? Одного стовпчика? Кілька? Який запит? Є індекс чи ні? Партиціонування?

8

Re: Postgresql, підключення та конкурентні запити

iovchynnikov написав:
ping написав:

є веб-аплікація (наприклад на Flask) , реалізовано API. Робота з базою через  SQLAlchemy.
як поведуть себе SQLite, MySQL , Postgresql у випадку, якщо , наприклад 100 запитів захочуть одночасно модифікувати одну таблицю?

"Модифікувати одну таблицю" це дуже широке поняття. Зміна одного рядка? Одного стовпчика? Кілька? Який запит? Є індекс чи ні? Партиціонування?

100 запитів в одну таблицю в одну і ту ж мить

30 - читають рядки
30 - пробують додати рядки
10 - пробують видалити рядки
30 - пробують поміняти один і той же рядок

Партиціонуванн , індекси - не застосовуються
------

що відбудеться?

9

Re: Postgresql, підключення та конкурентні запити

ping написав:
iovchynnikov написав:
ping написав:

є веб-аплікація (наприклад на Flask) , реалізовано API. Робота з базою через  SQLAlchemy.
як поведуть себе SQLite, MySQL , Postgresql у випадку, якщо , наприклад 100 запитів захочуть одночасно модифікувати одну таблицю?

"Модифікувати одну таблицю" це дуже широке поняття. Зміна одного рядка? Одного стовпчика? Кілька? Який запит? Є індекс чи ні? Партиціонування?

100 запитів в одну таблицю в одну і ту ж мить

30 - читають рядки
30 - пробують додати рядки
10 - пробують видалити рядки
30 - пробують поміняти один і той же рядок

Партиціонуванн , індекси - не застосовуються
------

що відбудеться?

Ці рядки пересікаються? Наприклад, ці "30 - читають рядки", які "10 - пробують видалити рядки".

10

Re: Postgresql, підключення та конкурентні запити

iovchynnikov написав:
ping написав:
iovchynnikov написав:

"Модифікувати одну таблицю" це дуже широке поняття. Зміна одного рядка? Одного стовпчика? Кілька? Який запит? Є індекс чи ні? Партиціонування?

100 запитів в одну таблицю в одну і ту ж мить

30 - читають рядки
30 - пробують додати рядки
10 - пробують видалити рядки
30 - пробують поміняти один і той же рядок

Партиціонуванн , індекси - не застосовуються
------

що відбудеться?

Ці рядки пересікаються? Наприклад, ці "30 - читають рядки", які "10 - пробують видалити рядки".

з висою долею імовірності - так.

11

Re: Postgresql, підключення та конкурентні запити

Я з базами не працював, але з усієї теорії, що читав, в даному випадку допоможуть тільки транзакції.

12

Re: Postgresql, підключення та конкурентні запити

транзакції в помощь... одного підключення вистачить.