Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
2 ёжик Ну по поводу теорий...Вы слышали анекдот "про сферического коня в вакууме" ? То что нет реальных СУБД работающих на "совсем без блокировок" говорит о многом. Как минимум о нежизнеспособности и неприменимости этого на практике. автор писал:В Oracle блокировка это физический объект, хранящийся в заголовке блока данных, и наложен он может быть не только при update но и при select for update т.е. без всяких изменений данных. Ну а в InterBase блокировка это и есть версия записи в совокупности с записью в TIP о состоянии породившей её транзакции. Они тоже физически существуют. автор писал:Вот и ножиком можно человека убить и из пистолета застрелить, но вы же не будете утверждать, что пистолет и нож одно и то же? Я об этом и говорю. Результат это БЛОКИРОВКА, и неважно ножом или пистолетом она достигнута. автор писал:Правда про InterBase спорит не буду, не знаю я его и механизмы работы представляю очень поверхностно. И не надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2003, 13:22 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
автор писал:То что нет реальных СУБД работающих на "совсем без блокировок" говорит о многом. Как минимум о нежизнеспособности и неприменимости этого на практике. Если я не вижу суслика, это еще не значит , что сусликов не существует. Если широко распространенные СУБД не работают "совсем без блокировок" говорит не о "нежиснеспособности", а о малом круге задач где подход жизнеспособен. Вообще говоря цель моей речи сводилось к тому, что бы показать что терминология aston называвшего Oracle сервером с гибридным механизмом обеспечения конкуретности, над которой Вы потешались, является правильной с точки зрения современной теории баз данных. автор писал:Я об этом и говорю. Результат это БЛОКИРОВКА, и неважно ножом или пистолетом она достигнута. Опять вопрос терминологии. Еще раз, блокировка (LOCK) в теории БД это не результат каких то действий и не ситуация когда одна транзакция не дает двигаться дальше другой, а инструмент при помощи которого транзакция заявляет свои права на некоторый объект (т.е. именно пистолет, можно убить, а можно неубивать а просто его на стену повесить). Выставление блокировки (LOCK) еще не означает что возник какой то конфликт, он может не возникнуть вообще. Именно при помощи таких блокировок блокировочники достигают правильности выполнения паралельных транзакций. И именно такого типа блокировку накладывает Oracle, т.е. транзакция создает некий объект который означает, что она обладает некими правами на некоторые данные в базе данных. И наличие такого механизма делает Oracle "немного блокировочником". Вы же, в приведенном примере, блокировкой называете ситуацию конфликта между транзакциями, которая может возникнуть для любого типа сервера, как для блокировочника так и для версионника и возникновение такой ситуации как раз ничего не говорит о механизмах работы сервера. автор писал:Ну а в InterBase блокировка это и есть версия записи в совокупности с записью в TIP о состоянии породившей её транзакции. Они тоже физически существуют. Ну хорошо, значит это тоже гибридный сервер а не чисто версионный :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2003, 14:26 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
2 Ёжик Ну вот, наконец-то хоть один собеседник в конструктивной форме с примерами озвучил свое мнение, а не стал рассказывать анекдоты и утверждать, что документация это не та документация. автор писал:5)... Имеем классический Deadlock Не, ну реализовать Deadlock Manager то надо, обязательно. автор писал:...но никак не вместо X-блокировки в SELECT FOR UPDATE. А пока юзайте dbms_lock в таких случаях. Ну ладно, пускай придумают команду SELECT FOR SHARED UPDATE - меня это вполне устроит. 2 ASCRUS Я же говорил, пример абстрактный. Понятно, что грамотным проктированием можно решить почти любые проблемы, но реализовать, IMHO, вполне полезные вещи на движке все же как-то лучше. И все таки - есть еще сомневаюшиеся, что Oracle - чистый версионник и не может вести себя как блокирововчник? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2003, 15:03 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
2 Ежик автор писал:Если я не вижу суслика, это еще не значит , что сусликов не существует. Если лохнесского чудовища никто не видел, значит его нет. Если кто-то считает что оно существует, то бремя доказательства лежит на нём. автор писал:Вообще говоря цель моей речи сводилось к тому, что бы показать что терминология aston называвшего Oracle сервером с гибридным механизмом обеспечения конкуретности, над которой Вы потешались, является правильной с точки зрения современной теории баз данных. Ну во первых я ещё не над кем не потешался. А во вторых то что мы с aston-ом считаем классическим блокировочником (я думаю в этом у нас полный консесус) это СУБД которая блокирует по ЧТЕНИЮ в режиме READ COMMITED. То-есть то что одна транзакция читает, другаю не может изменить, и наоборот : то что одна транзакция меняет, другая не может прочитать. Пример этого явления MsSQL. Oracle и Interbase лишены этого недостатка благодаря rollback-сегментам в первом и версионности во втором случае. Ни о каких "теоретических" "совсембезблокировочниках" речь до вас тут не шла. Следовательно ничего вы не показали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2003, 15:16 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
2 aston автор писал:Не, ну реализовать Deadlock Manager то надо, обязательно. Надо, но обнаружение ситуации deadlock-a вещь дорогая, требующая построения графов ожидания блокировок. Да и откат убиваемой транзакции тоже вещь недешовая. Поэтому возникновения этой ситуации стараются избегать, в том числе и путем грамотного использования for update. И почему все обращаются только к ёжику? Да он диктует, но набиваю то Я, обыдно да.... 2 Zaxx автор писал:А во вторых то что мы с aston-ом считаем классическим блокировочником (я думаю в этом у нас полный консесус) это СУБД которая блокирует по ЧТЕНИЮ в режиме READ COMMITED А у меня сложилось впечатление, что только Вы так это трактуете, отсюда и беспредметный спор каждого из ваc в своих терминах, если это не так то я не прав (ёжик попутал) и приношу извинения. Давайте спросим у aston aston, вы действительно так считали и мы с ёжиком зря влезли пытаясь привести ваш с Zaxx спор к общей терминологии, когда она у вас и так общая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2003, 15:46 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
Отвечу обоим и процитирую последний пост Zaxx. автор писал:...это СУБД которая блокирует по ЧТЕНИЮ в режиме READ COMMITED Я считаю, что SELECT FOR UPDATE и есть чтение, но это чтение подозрительно похоже на чтение в блокировочниках (без NOWAIT). Из чего я и делаю вывод,что Oracle гибрид .MSSQL не заподозришь в шагах в сторону версионности, а Interbase в сторону блокировочника. А вот Oracle, рожденный версионником и полностью реализующий версионную модель СУБД со своим SELECT FOR UPDATE также пытается играть на поле блокировочников, что я, IMHO, считаю огромным плюсом (еще бы чуть-чуть и...). Я не согласен, что SELECT FOR UPDATE это "блокирование блокированием" (цитата из поста Zaxx). Для блокирования блокированием в Oracle, наверное, придумали бы какой нибудь LOCK INTO TABLE и не надо было бы извлекать данные из блоков, тратиться курсор и т.д. Вот в этом, IMHO, и есть суть наших расхождений с Zaxx. Не так ли? Спасибо за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2003, 17:59 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
Ну значит я был не прав по вашему поводу :) автор писал:Я считаю, что SELECT FOR UPDATE и есть чтение, но это чтение подозрительно похоже на чтение в блокировочниках (без NOWAIT). Из чего я и делаю вывод,что Oracle гибрид . Ну тогда в MS SQL есть конструкция SELECT WITH (NOLOCK), чтение без блокирования, "подозрительно похоже" на чтение в версионниках, надо делать вывод типа MS SQL версионник? ;) (это, типа, шутка и ответа не требует). автор писал:MSSQL не заподозришь в шагах в сторону версионности Говорят уже можно заподозрить, типа, в Yukon или как его там есть уровень изоляции Snapshot. автор писал: Для блокирования блокированием в Oracle, наверное, придумали бы какой нибудь LOCK INTO TABLE и не надо было бы извлекать данные из блоков, В Oracle надо было бы извлекать данные в любом случае, он блокировки хранит прямо в блоках данных, т.е. что бы поставить блокировку надо сначала достать этот блок, механизм там такой. Всем удачных выходных! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2003, 18:21 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
2 Я и ёжик авторДля блокирования блокированием в Oracle, наверное, придумали бы какой нибудь LOCK INTO TABLE и не надо было бы извлекать данные из блоков Я так подозреваю, что SELECT FOR UPDATE не в oracle придумали. Это SQL92. Типа стандарт... авторInterbase в сторону блокировочника В Interbase, по моему, тоже есть SELECT FOR UPDATE, только он ничего не блокирует и применяется для ...WHERE CURRENT OF... Хотя я где-то видел что в Firebird 1.5 обещали SELECT FOR UPDATE WITH LOCK... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2003, 10:31 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
Такое впечатление что кроме Oracle и Firebird ничего больше нет. Если критерий "стоимость СУБД" очень важен то ничего лучше SAP DB не найдешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2003, 11:49 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
Кстати насчет надежности и производительности SAP DB - то что на ней работает например ERP система SAP о чем то говорит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2003, 11:52 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
А я читал тут недавно, если память не изменяет мне, что SAP выложил на сайт нерабочую инсталляцию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2003, 13:26 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
>> кстати насчет надежности и производительности SAP DB - то что на ней работает например ERP система SAP о чем то говорит. туфта, R/3 может работать В ТОМ ЧИСЛЕ и с sap db. Но это не сильно рекомендуется, поскольку морально устаревшая система (клон adabas) - sap отказывается от её поддержки >>А я читал тут недавно, если память не изменяет мне, что SAP выложил на сайт нерабочую инсталляцию не понял - чего исталляцию? sap db - так он бесплатный, кроме sap его в куче мест можно взять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2003, 17:11 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
http://www.wintercorp.com/vldb/2003_TopTen_Survey/TopTenWinners.asp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 20:18 |
|
||
|
Размер БД 10 Gb
|
|||
|---|---|---|---|
|
#18+
Understanding Snapshot Isolation Snapshot isolation consists of these components: Snapshot isolation framework Instructs Microsoft® SQL Server™ "Yukon" Beta 1 to keep versions of incoming updates. Snapshot transaction isolation level Allows individual applications to execute snapshot isolation queries. The framework for snapshot isolation must be established for each database before applications can execute snapshot queries. To access data in the database using snapshot queries, the snapshot isolation level for the connection must be set to SNAPSHOT for each application before the application initiates snapshot isolation transactions (transactions execute snapshot queries when reading the data). For more information, see Using Snapshot Isolation. When the snapshot isolation framework is established, any new update causes SQL Server to store in tempdb a logical copy (or version) of the previously committed value. SQL Server maintains a snapshot of all database changes at the time when snapshot isolation starts. All the versions of a record are marked with a timestamp of the transactions that made the change. The versions of updated records are chained using a link list and stored in tempdb. The newest record value is stored in a database page and linked to the version store in tempdb. When a user in a snapshot isolation transaction reads the data, SQL Server first accesses the last committed record, and then retrieves the record value from the version store by traversing the chain of pointers to the specific record version of the data. Disk space of 14-bytes is required for each record being updated for a particular database with the snapshot isolation framework enabled. These 14 bytes are added once for each record during the initial update, and are used to maintain record version information of the most current record stored in the database. It is recommended that enough disk space be allocated to accommodate this requirement. When there is not enough space available on the current index or data page under snapshot isolation, the process of maintaining record version information with the most current record can cause index-page splits or the allocation of a new data page. SQL Server automatically reclaims the 14-byte space with the first update executed after the snapshot isolation framework is turned off. Storage in tempdb Establishing the snapshot isolation framework causes all update records for a particular database to be versioned and stored in tempdb, regardless of whether any users are currently trying to read the data using snapshot isolation scans. SQL Server maintains these records and dynamically claims or releases the disk space for unused versions. Database administrators must plan ahead and allocate adequate space in tempdb. The following formula provides an approximate value for the version store space allocation in tempdb: Total version store (KB) = Version generation rate (KB/sec.)* the longest transaction time (sec.) The version store generation and the longest transaction time can be obtained using SQL Server performance counters available for snapshot isolation. Data Availability to Readers The presence of record versions of data in tempdb increases the availability of and concurrent access to the data for users. The following snapshot isolation properties increase the availability of data: Read operations with a transactionally consistent snapshot of the database. Users do not lock data during a read operation (readers do not block writers). Users can access the last committed value of the row while other transactions are updating the row. Writers do not block readers and vice versa. Reduces the number of deadlocks for SQL Server. Snapshot Isolation Scenario For example, User 1 is modifying data when User 2 tries to read the same data, both in a snapshot isolation transaction. User 2 is not blocked from reading the data. Although the data is currently locked for updates by User 1, a previous version of the data is available to User 2. When User 1 commits the updates to the data, future reads of the data executed from a new snapshot isolation transaction will access the updated data. If User 2 updates the data, SQL Server checks if the data has changed since the start of User 2's transaction. If it has changed, SQL Server rolls back the update transaction of User 2 and returns an error. However, if the data has not changed, SQL Server applies the updates by User 2. Future reads of the data inside the same transaction will show the updates of User 2. Illustration of Snapshot Isolation Scenario The following example shows how row versioning works. User 1: Reader User 2: Writer USE AdventureWorks GO /*Enable snapshot isolation on the database.*/ ALTER DATABASE AdventureWorks SET ALLOW_SNAPSHOT_ISOLATION ON CREATE TABLE AWTable (C1 int PRIMARY KEY, C2 int) INSERT AWTable VALUES (1, 5) /*Start a snapshot transaction on connection 1.*/ SET TRANSACTION ISOLATION LEVEL SNAPSHOT BEGIN TRAN SELECT C2 FROM AWTable WHERE C1=1 /*Here is the result set: 5*/ /*Start a new transaction on connection 2.*/ USE AdventureWorks GO SET TRANSACTION ISOLATION LEVEL SNAPSHOT BEGIN TRAN SELECT C2 FROM AWTable WHERE C1=1 /*Here is the result set: 5*/ UPDATE AWTable SET C2=6 WHERE C1=1 SELECT C2 FROM AWTable WHERE C1=1 /*SQL Server is supposed to return 6.*/ /*Return to connection 1 and read AWTable row 1.*/ SELECT C2 FROM AWTable WHERE C1=1 /*Reader is able to read data despite the update transaction in connection 2. Here is the result set: 5*/ /*Commit the update on Connection 2.*/ COMMIT SELECT C2 FROM AWTable WHERE C1=1 /*SQL Server now returns 6, the updated committed value.*/ Benefits and Costs of Row Versioning Row versioning in snapshot isolation transactions are most useful in avoiding reader-reader, reader-writer, and writer-reader blocking scenarios and in reducing the number of potential deadlocks. Use snapshot isolation primarily for read transactions or when an occasional transaction rollback due to mandatory conflict detection is not a major issue. Benefits of Snapshot Isolation Transactions The benefits include: Nonblocking consistent reporting and ad hoc queries running parallel with an OLTP application. Application migration to SQL Server from other relational database systems supporting nonblocking reads. Consistency of aggregates, such as AVG, COUNT, and SUM, as well as index intersections and index joins without escalating read scans to a higher isolation level. Deadlock reduction. Costs of Snapshot Isolation Transactions The following costs associated with enabling snapshot isolation transactions should be considered when you decide to use row versioning: When snapshot isolation framework is enabled, update transactions for a particular database must maintain record versions, even if there are currently no readers. Enough disk space for the version store must be provided. Versions are stored in tempdb. If there are very long-running transactions, all the versions generated by update transactions during the time must be kept in tempdb. If tempdb runs out of space, update operations do not fail, but the snapshot isolation queries might fail. The overhead of 14 bytes per record must be set aside. Update performance can be slower due to the work involved in maintaining older versions. The actual difference in the system throughput with the snapshot isolation framework set to ON depends on what percentage of the system resource is spent on updates for the workload. For OLTP workloads where each update changes just a few rows in a database, the performance degradation for database updates is within a few percents compared to nonversioned databases with the snapshot isolation framework turned off. If a very large amount of data is changed in each update, the performance degradation could be higher compared to nonversioned databases. Data readers face the extra cost of traversing the version link list. Constructing a snapshot of data involves system resources (CPU and memory). The older the snapshot, the slower the process of accessing it in a snapshot isolation transaction. Since the record versions are stored in tempdb, the more tempdb pages can be stored in memory during snapshot version construction, the better is the performance and the lower is the number of issued I/Os. Some update transactions using snapshot isolation might have to be rolled back because of mandatory conflict detection for update operations. Limitations of Snapshot Isolation Transactions Consider the following limitations when working with snapshot isolation transactions: Distributed transactions, including queries in distributed partitioned databases, are not supported. If applications use Global temp tables, you must allow snapshot isolation in tempdb. Global temp tables are stored in tempdb. Snapshot transactions fail when: A database is made read-only after the snapshot transaction starts, but before the snapshot transaction accesses the database. The database state was changed in such a way that database recovery occurred after a snapshot transaction starts, but before the snapshot transaction accesses the database. Some examples of this situation include: the database was set to OFFLINE and then to ONLINE, database auto-close and open, database detach and attach. The following data definition language (DDL) statements are executed inside snapshot isolation transaction: ALTER INDEX ALTER PARTITION FUNCTION ALTER TABLE CREATE INDEX CREATE XML INDEX DBCC DBREINDEX DROP INDEX SQL Server does not keep multiple versions of the system meta data. Data definition language (DDL) statements on tables and other database objects (indexes, views, data types, stored procedures, and common language runtime functions) cause subsequent snapshot isolation queries on those objects to fail if the DDL happened after the snapshot isolation transaction started. This example illustrates what happens in a snapshot isolation transaction when a DDL takes place in another transaction. User 1: Reader User 2: DDL statement (ALTER INDEX REBUILD) Use AdventureWorks GO /*Enable snapshot isolation on the database.*/ ALTER DATABASE AdventureWorks SET ALLOW_SNAPSHOT_ISOLATION ON CREATE TABLE AWTable (C1 int, C2 int) CREATE INDEX AWIndex on AWTable (C1) INSERT AWTable VALUES (1, 5) /*Start a snapshot transaction on connection 1.*/ SET TRANSACTION ISOLATION LEVEL SNAPSHOT BEGIN TRAN SELECT C2 FROM AWTable WHERE C1=1 /*Here is the result set: 5*/ /*Start a new transaction on connection 2.*/ USE AdventureWorks GO ALTER INDEX AWIndex ON AWTable REBUILD SELECT C2 FROM AWTable WHERE C1=1 /*SQL Server "Yukon" Beta 1 fails this transaction because a DDL statement on this table was executed (by User 2).*/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2003, 21:48 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=32337894&tid=1554222]: |
0ms |
get settings: |
9ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 346ms |

| 0 / 0 |
