powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Таблица для транзакций
25 сообщений из 76, страница 2 из 4
Таблица для транзакций
    #39459324
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как то тестировал я подобное: одновременный перевод денег по зарплатной программе.
Так вот на моём домашнем компе, где я развернул и базу и приложение я дошёл до сотни запросов в секунду на обычных таблицах с IDENTITY.

А ТС предпологает, что у него может быть когда-нибудь будет 278 запросов в секунду.

ИМХО в первую очередь затык будет на стороне приложения, а не БД.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459326
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenford, на чём кстати клиента БД писать будете?
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459331
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgДа это понятно, что могут быть пики.
Я просто призываю стараться максимально корректно рассчитывать реальную нагрузку, в т.ч. пиковую.

Что бы нагрузка составила 100 тыщ транзакций в секунду, нужно, что бы в обед 10 миллионов человек подошли к миллиону терминалов и совершили операции.

Вы будете бслуживать миллион терминалов на старте? Тогда ок, ваши расчёты правильные.

что-бы нагрузка составила 100 тысяч в секунду, надо что-бы 100 тысяч человек произвели ее в эту самую секунду. В результате половина из них получит отклик не в 2 секунды, а в 10.

alexeyvgВот именно, нужно сравнить.
Вьюшка пересчитывает при апдэйте всю историю для данных значений полей группировки (то есть по номеру карты), а триггер на вставку будет апдэйтить только одну запись.

Я так сразу не могу сказать, что эффективнее, но на мой взгляд эффективнее хранить баланс, особенно при удлинении истории хранения.

Насчёт баги - ну, писать надо правильно.
Это ведь очень простая логика, её вполне реально надёжно, это ведь один оператор апдэйта в триггере.
нет, в триггере точно никакой логики не будет. Правильно код без багов конечно очень хорошая цель, но недостижимая, поэтому первым делом надо сводить к минимуму саму возможность его допустить, а не декларировать такие цели и потом искать и наказывать виновных. Соответственно что способен сделать сам сервер - он сам и должен делать. Далеко не факт что вьюшка пересчитывает весь обьем строк, она вполне может оптимизированна для таких случаев, а даже если сейчас нет - то может в будущем.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459337
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenford,
авторчто-бы нагрузка составила 100 тысяч в секунду, надо что-бы 100 тысяч человек произвели ее в эту самую секунду. В результате половина из них получит отклик не в 2 секунды, а в 10.

вы бухгалтер?
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459340
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAstenford, на чём кстати клиента БД писать будете?
клиент либо будет типа вебсервиса вызываемого самим банком, либо какой-то сервис будет который слушает tcp-ip соединения шлюза. Это еще не решено
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459343
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordчто-бы нагрузка составила 100 тысяч в секунду, надо что-бы 100 тысяч человек произвели ее в эту самую секунду. В результате половина из них получит отклик не в 2 секунды, а в 10.
А Вы уже подумали о том, что до базы дело в этом случае и не дойдёт, очередь образуется на веб-сервере или последний вообще приляжет :)
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459346
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordskyANAstenford, на чём кстати клиента БД писать будете?
клиент либо будет типа вебсервиса вызываемого самим банком, либо какой-то сервис будет который слушает tcp-ip соединения шлюза. Это еще не решено
Вот надо бы решить, коль Вы собрались обеспечивать 100 тыс. запросов в секунду.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459348
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА Вы уже подумали о том, что до базы дело в этом случае и не дойдёт, очередь образуется на веб-сервере или последний вообще приляжет :)
это отдельный вопрос, не относящийся к таблицам базы данных) Решатся тоже будет отдельно какой-нибудь вебфермой
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459360
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordskyANAА Вы уже подумали о том, что до базы дело в этом случае и не дойдёт, очередь образуется на веб-сервере или последний вообще приляжет :)
это отдельный вопрос, не относящийся к таблицам базы данных) Решатся тоже будет отдельно какой-нибудь вебфермой
Я намекаю Вам на то, что Вы не на то тратите время. C вашими 278 вставок в секунду БД легко справится на обычных таблицах с IDENTITY.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459372
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvgВот именно, нужно сравнить.
Вьюшка пересчитывает при апдэйте всю историю для данных значений полей группировки (то есть по номеру карты), а триггер на вставку будет апдэйтить только одну запись.
Ненене!
"Вот так у нас все олени и кончились!"(С)
Это убьет всю производительность на корню, и при некоторой удаче можно еще натрахаться с локами-дедлоками по самое небалуйся.

Наверное, всё же схема "Горячая таблица" без индексов (ну, в разумном понимании слова "без") - "Холодная таблица" со всевозможными индексами и предрассчитанными агрегатами, пополняемая из горячей таблицы в периоды минимальной активности потребителей - наше всё.

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

С другой стороны, если, например, количество транзакций за день - небольшое, ну миллион - 10 миллионов, то, наверное, можно и не париться.
Порезать холодную таблицу по количеству опердней, ну, пусть 365, а в оперативной - держать две секции: До/После времени закрытия опердня.
И по процедуре закрытия опердня формировать из секции "До" горячей таблицы данные для секции, соответствующей конкретному опердню холодной таблицы, уже со всеми индексами, индексированными вью, таблицами предрассчитанных агрегатов, свистелками и перделками.
Понятно, что в отдельную табличку/таблички, рядом с холодной.
А потом одномоментно выносить переключением метаданных секцию "ДО" из горячей таблицы и включать подготовленные данные в холодную.
Причем холодную таблицу - можно и на соседнем сервере держать, проблем то...
Ну, понятно, еще сверххолодная таблица понадобиться, из одних агрегатов за передыдущие годы...

Т.е. это классическая схема "хранилище - оперативные данные", только отказ в обслуживании на момент пополнения хранилища недопустим, а так - никаких чудес.

Всё ИМХО, разумеется.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459385
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster,

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

действительно, это жутко необходимый функционал для транзакций...

2-30млн в сутки вообще не требуют никаких особых приседаний. Годовые таблицы, для спихивания подальше. это то что вижу, а так да можно придумывать сколько угодно.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459437
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordalexeyvgДа это понятно, что могут быть пики.
Я просто призываю стараться максимально корректно рассчитывать реальную нагрузку, в т.ч. пиковую.

Что бы нагрузка составила 100 тыщ транзакций в секунду, нужно, что бы в обед 10 миллионов человек подошли к миллиону терминалов и совершили операции.

Вы будете обслуживать миллион терминалов на старте? Тогда ок, ваши расчёты правильные.
что-бы нагрузка составила 100 тысяч в секунду, надо что-бы 100 тысяч человек произвели ее в эту самую секунду. В результате половина из них получит отклик не в 2 секунды, а в 10.Не, такого точно не будет.
Всё распределяется равномерно, жизнь не дискретна. От миллиона терминалов транзакции будут распределяться очень, очень равномерно.

Неравномерность возможна только в том случае, если кто то буферизирует этот миллион транзакций, накопит их за 10 секунд, а потом плюнет в вас.
Но тогда латентность создаёте не вы, и вся система в целом нормально работать не будет.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459440
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Для скорости" существуют нереляционные/нетранзакционые СУБД.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459448
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggsteralexeyvgВот именно, нужно сравнить.
Вьюшка пересчитывает при апдэйте всю историю для данных значений полей группировки (то есть по номеру карты), а триггер на вставку будет апдэйтить только одну запись.
Ненене!
"Вот так у нас все олени и кончились!"(С)
Это убьет всю производительность на корню, и при некоторой удаче можно еще натрахаться с локами-дедлоками по самое небалуйся.Почему убьёт? Данных же будет читаться меньше, а писаться столько же, по сравнению с мат-вьюхой.
Дедлоками придётся управлять, да.
Впрочем, можно, конечно, и без триггеров, и соответственно не апдэйтить итог в той же транзакции, но это очень сильно поднимает требования к качеству кода и архитектуре.
uaggsterС другой стороны, если, например, количество транзакций за день - небольшое, ну миллион - 10 миллионов, то, наверное, можно и не париться.
Порезать холодную таблицу по количеству опердней, ну, пусть 365, а в оперативной - держать две секции:С миллионом непонятно зачем вообще париться с секциями, "порезать" и т.д.?
Но ТС говорит про стотыщ в секунду, то есть 8 миллиардов 640 миллионов в сутки.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459449
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов"Для скорости" существуют нереляционные/нетранзакционые СУБД.Да, отличный выбор для финансовой системы :-)
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459461
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgВладислав Колосов"Для скорости" существуют нереляционные/нетранзакционые СУБД.Да, отличный выбор для финансовой системы :-)

Так выбор зависит от контекста задачи, который автор тщательно скрывает :) Ему шашечки или ехать?
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459463
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordнет, в триггере точно никакой логики не будет. Правильно код без багов конечно очень хорошая цель, но недостижимая, поэтому первым делом надо сводить к минимуму саму возможность его допустить, а не декларировать такие цели и потом искать и наказывать виновных. Соответственно что способен сделать сам сервер - он сам и должен делать. Далеко не факт что вьюшка пересчитывает весь обьем строк, она вполне может оптимизированна для таких случаев, а даже если сейчас нет - то может в будущем.И вообще, непонятна концентрация на "таблице транзакций".

На каждую "транзакцию" будет создаваться десятки связанных записей, на разных этапах обработки, под управлением разных сервисов, с некоторыми расчётами, с соблюдением целостности и т.д., т.к. у вас же не аналитическая система, а обработка платежей.

Поэтому повторю своё ИМХО - решение проблем масштабирования нужно закладывать архитектурно в виде распределения компонентов системы. Что, конечно, не исключает оптимального написания кода и оптимальной модели данных внутри узла.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459464
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для меня его способ решения приема платежей вовсе не очевиден, например.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459493
cossack5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут уже предлагали In Memory. Не вижу причин, почему нельзя.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459497
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю, что автор хочет обеспечить логическую транзакционнность с внешними системами.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459535
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgВьюшка пересчитывает при апдэйте всю историю для данных значений полей группировки (то есть по номеру карты), а триггер на вставку будет апдэйтить только одну запись.Не всю. Пересчитывается дельтами только по затронутым строкам. Именно поэтому в индексированных представлениях недопустимы max, min и т.п.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459565
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmalexeyvgВьюшка пересчитывает при апдэйте всю историю для данных значений полей группировки (то есть по номеру карты), а триггер на вставку будет апдэйтить только одну запись.Не всю. Пересчитывается дельтами только по затронутым строкам. Именно поэтому в индексированных представлениях недопустимы max, min и т.п.Дельтами? Не знал, спасибо.

Кстати, странно, что max, min недопустимы. Они ведь тоже дельтой вычисляются - добавленное (изменённое) значение больше чем было текущее (для поля группировки, т.е. для ключа view), значит, это новый max
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459567
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cossack5Тут уже предлагали In Memory. Не вижу причин, почему нельзя.Выключается питание, и в базе нет уже подтверждённых платежей.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459583
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordПричем не получится его как-то постфактум слить в другую таблицу и посчитать там - баланс должен быть актуален немедленно что-бы карта в минус не ушла пока аналитика где-то там пересчитывается. Как все эти проблемы решаются? Точное число транзакций неизвестно, это зависит от обьема бизнеса, сегодня может быть небольшой, те-же несколько тысяч в секунду, но через пару лет могут до сотен тысяч вырасти - не перекраивать-же систему из-за этого, архитектурно надо сразу правильно сделать с прицелом на большие обьемы


Ну совсем онлайн не получится, конечно.
Если вставка будет не справляться, можно делать только пакетную запись, скажем 1 раз в секунду.
Например, накапливать транзакции в промежуточных таблицах.
...
Рейтинг: 0 / 0
Таблица для транзакций
    #39459666
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов"Для скорости" существуют нереляционные/нетранзакционые СУБД.
Наивняк.

"Для скорости" - существует текстовый файл с записью "в конец".
...
Рейтинг: 0 / 0
25 сообщений из 76, страница 2 из 4
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Таблица для транзакций
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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