powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Скорость update
11 сообщений из 36, страница 2 из 2
Скорость update
    #35035753
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper
Посмотрите исходники VCL - почти все проперти так реализованы

Исходный код, написанный разработчиком на T-SQL = исходникам VCL. Т.е. как раз та самая ситуация, когда разработчик включает мозг, а не тупо прописывает свойство.
...
Рейтинг: 0 / 0
Скорость update
    #35035849
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin SergSuper
Посмотрите исходники VCL - почти все проперти так реализованы

Исходный код, написанный разработчиком на T-SQL = исходникам VCL. Т.е. как раз та самая ситуация, когда разработчик включает мозг, а не тупо прописывает свойство.
Поле таблицы = проперти в Дельфи
Такой же черный ящик. Почему бы так не реализовать и в MS SQL(поведение то системы никак не меняется, а скорость может вырасти) для меня например тоже остаётся загадкой. Скорее всего какие-то архитектурные препятствия.
...
Рейтинг: 0 / 0
Скорость update
    #35036673
Самоловских Виталий aka Kefir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧАЛ
В отсутствии транзакций действительно такое пожелание возможно, но тогда это уже не будет полноценная СУБД. Так что тут проблемы глубже. Вся пакость в том, что в общем случае два следующие запроса могут привести БД к разным состояниям:

Код: plaintext
update mytable set name = 'lalala'; 

Код: plaintext
update mytable set name = 'lalala' where name != 'lalala'; 

Это легко продемонстрировать. После первого запроса гарантировано все поля будут равны 'lalala'. А вот после второго запроса это вовсе не гарантировано, поскольку те поля, который уже были равны 'lalala' (а потому исключены) могут быть в процессе выполнения приравнены к какому-то другому значению (конкурентным запросом). Такие ситуации часто встречаются, например, с неравенствами тоже подобного рода проблемы могут возникнуть.

Угу. Да проблема. Но думаю что, если оптимизация пойдет на уровне СУБД, это можно обойти. Заблокировать неизменяемые записи для записи. Ну т.е. те которые как-бы обновляются а на самом деле не обновляются. А ну хотя, здесь опять работа с транзакциями, страницы надо блокировать. Вот оно в чем дело!
...
Рейтинг: 0 / 0
Скорость update
    #35036710
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Такие ситуации часто встречаются,
открой для себя уровни изолированности транзакций

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Скорость update
    #35036711
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Посмотрите исходники VCL - почти все проперти так реализованы
для текстовый (или просто больших) свойств проще сразу присвоить, бо
проверка дороже выйдет. я думаю что поэтому и не сделали

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Скорость update
    #35037163
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperПоле таблицы = проперти в Дельфи
Такой же черный ящик. Почему бы так не реализовать и в MS SQL(поведение то системы никак не меняется, а скорость может вырасти) для меня например тоже остаётся загадкой. Скорее всего какие-то архитектурные препятствия.
Как вариант:

Код: plaintext
UPDATE <table> SET <field> = 'ляляля' WHERE id =  1 
И
Код: plaintext
UPDATE <table> SET <field> = 'ляляля' WHERE id =  1  AND <field> <> 'ляляля'
Могут привести к РАЗНЫМ результатам в БД! К примеру триггер на таблице. В одном случае он будет вызван, а в другом нет.

Потому "By Design" сведение этого поведения к одному недопустимо... ИЛИ нужно просчитывать, что даже если UPDATE не прошел, то триггер нужно запустить.
...
Рейтинг: 0 / 0
Скорость update
    #35037235
Самоловских Виталий aka Kefir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Триггеры, текстовые поля и т.п. - это уже детали. Длинные текстовые поля можно писать без проверки, если навешан триггер, то оптимизацию не делать. СУБД же знает с чем имеет дело, так что сложности здесь нет. А вот с транзакционной целостностью, похоже, не проходит.
...
Рейтинг: 0 / 0
Скорость update
    #35037243
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самоловских Виталий aka Kefir пишет:
> Оптимизировал однажды одну штуку. Столкнулся с тем что update одной
> записи выполняется 15мс. Это очень долго. Специфика была такова, что

Это - быстро. Долго - это порядка секунд.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Скорость update
    #35037833
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow
>Посмотрите исходники VCL - почти все проперти так реализованы
для текстовый (или просто больших) свойств проще сразу присвоить, бо
проверка дороже выйдет. я думаю что поэтому и не сделали

Posted via ActualForum NNTP Server 1.4

Не. Дело в том, что просто изменеие может привести к генерации цепочки ненужных событий, потому и проверяют.
...
Рейтинг: 0 / 0
Скорость update
    #35038147
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow
>Посмотрите исходники VCL - почти все проперти так реализованы
для текстовый (или просто больших) свойств проще сразу присвоить, бо
проверка дороже выйдет. я думаю что поэтому и не сделали

есть всё-таки разница между тем чтобы обновить участок памяти и обновить поле таблицы со всеми вытекающими блокировками, пересчетами индексов и т.д.



VoDA SergSuperПоле таблицы = проперти в Дельфи
Такой же черный ящик. Почему бы так не реализовать и в MS SQL(поведение то системы никак не меняется, а скорость может вырасти) для меня например тоже остаётся загадкой. Скорее всего какие-то архитектурные препятствия.
Как вариант:

Код: plaintext
UPDATE <table> SET <field> = 'ляляля' WHERE id =  1 
И
Код: plaintext
UPDATE <table> SET <field> = 'ляляля' WHERE id =  1  AND <field> <> 'ляляля'
Могут привести к РАЗНЫМ результатам в БД! К примеру триггер на таблице. В одном случае он будет вызван, а в другом нет.

Потому "By Design" сведение этого поведения к одному недопустимо... ИЛИ нужно просчитывать, что даже если UPDATE не прошел, то триггер нужно запустить.

естественно имеется в виду что внешне это никак не должно отражаться
разговор идёт только о реализации самого сервера
...
Рейтинг: 0 / 0
Скорость update
    #35038549
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper VoDA[Как вариант:

Код: plaintext
UPDATE <table> SET <field> = 'ляляля' WHERE id =  1 
И
Код: plaintext
UPDATE <table> SET <field> = 'ляляля' WHERE id =  1  AND <field> <> 'ляляля'
Могут привести к РАЗНЫМ результатам в БД! К примеру триггер на таблице. В одном случае он будет вызван, а в другом нет.

Потому "By Design" сведение этого поведения к одному недопустимо... ИЛИ нужно просчитывать, что даже если UPDATE не прошел, то триггер нужно запустить.

естественно имеется в виду что внешне это никак не должно отражаться
разговор идёт только о реализации самого сервераВозможно во всем виновата Бритва Оккама.
Данное действо усложняет логику работы системы, при этом бОльшему количеству использующих ИМХО не нужна.
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Скорость update
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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