20
[email protected] Hệ quản trị cơ sở dữ liệu Hệ quản trị cơ sở dữ liệu Dư Phương Hạnh Bộ môn Hệ thống thông tin Khoa CNTT, trường Đại học Công nghệ Đại học Quốc gia Hanoi Transaction Transaction

4.2 transaction

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 4.2 transaction

[email protected]

Hệ quản trị cơ sở dữ liệuHệ quản trị cơ sở dữ liệu

Dư Phương HạnhBộ môn Hệ thống thông tin

Khoa CNTT, trường Đại học Công

nghệ

Đại học Quốc gia Hanoi

TransactionTransaction

Page 2: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT2

Introducing Transactions

We live in a transactional world and we perceive that things such as money, files, and data move from one place to another.

We understand that data doesn't really move. It gets copied from storage and the new copy is inserted into a new storage location, and then the original copy is deleted from its initial location.

In a database, a transaction is simply a mechanism to ensure and verify that data gets to its intended destination. Just like a purchase or bank transaction, both parties must be satisfied with the results.

Page 3: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT3

Transaction Types

Explicit Transaction. – The explicit transaction is defined by the presence of an

explicit BEGIN TRANSACTION statement followed by one or more dependent data modification statements and completed with an explicit COMMIT TRANSACTION statement.

– Error checking is added prior to the COMMIT TRANSACTION statement so that if an error occurred the transaction can be reversed with a ROLLBACK TRANSACTION statement.

Page 4: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT4

Transaction Types

Implicit Transaction. – The implicit transaction follows the behavior of some

other database products in that whenever a data modification is executed it implicitly begins a transaction.

– However, it does not complete the transaction and release the modified data until an explicit COMMIT TRANSACTION or ROLLBACK TRANSACTION statement is issued.

– Implicit transactions are enabled on a connection basis with the SET IMPLICIT_TRANSACTIONS ON command.

Page 5: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT5

Transaction Types

Auto-Commit Transaction.

– If a data modification statement is executed against

the database without an explicit or implicit transaction,

it is considered an auto-commit transaction.

– The modification contained in an auto-commit

transaction follows the same pattern as other

transactions

Page 6: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT6

The ACID Test

Most of us have been burned enough by data loss problems to realize that steps must be taken to ensure that data gets from one place to another. Although there are a number of benefits, this is what transactions are all about.

A bona fide transaction must meet the following criteria:

Page 7: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT7

The ACID TestAtomic — All steps and operations that are part of a transaction are

treated as an atomic unit. Either all succeed or all fail together.Consistent — The outcome of any transaction is always

predictable; all of the operations either fail or succeed. All operations abide by consistency rules and checks to ensure data integrity within the database.

Isolated — Any operations performed before, during, or after the transaction will see related data in a consistent state, rather than in a state of partial completion. Any user or operation that queries data affected by a transaction will perceive that the entire transaction was committed instantaneously.

Durable — If a transaction succeeds, data is written to disk and does not revert to its previous state. Data can survive system failure.

Page 8: 4.2 transaction

[email protected]

Hệ quản trị cơ sở dữ liệuHệ quản trị cơ sở dữ liệu

Dư Phương HạnhBộ môn Hệ thống thông tin

Khoa CNTT, trường Đại học Công

nghệ

Đại học Quốc gia Hanoi

MySQL TransactionMySQL Transaction

Page 9: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT9

Using MySQL Transaction

To start a transaction you use the START TRANSACTION statement

To undo MySQL statements you use ROLLBACK statement. Note that there are several SQL statements you cannot use ROLLBACK such as:– CREATE / ALTER / DROP DATABASE

– CREATE /ALTER / DROP / RENAME / TRUNCATE TABLE

– CREATE / DROP INDEX

– CREATE / DROP EVENT

– CREATE / DROP FUNCTION

– CREATE / DROP PROCEDURE

– …

Page 10: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT10

Using MySQL Transaction

To write the changes into the database within a transaction you use the COMMIT statement.

It is important to note that MySQL automatically commit the changes to the database by default. To force MySQL not to commit changes automatically, you need to use the following statement:

SET autocommit = 0;

Page 11: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT11

ExamplesUsing MySQL transaction to add new sale order into our Classicmodels database and add the transaction processing steps:

– Start a transaction using START TRANSACTION– Get latest sale order number from orders table, and use

the next sale order number as the new sale order number.

– Insert a new sale order into orders table for a given customer

– Insert new sale order items into orderdetails table– Commit changes using COMMIT statement– Get data from both table orders and orderdetails tables to

confirm the changes

Page 12: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT12

MySQL Transaction

Page 13: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT13

MySQL Transaction with savepoint

Page 14: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT14

MySQL Transaction with savepoint

SAVEPOINT identifier

ROLLBACK [WORK] TO [SAVEPOINT] identifier

RELEASE SAVEPOINT identifier

Page 15: 4.2 transaction

[email protected]

Hệ quản trị cơ sở dữ liệuHệ quản trị cơ sở dữ liệu

Dư Phương HạnhBộ môn Hệ thống thông tin

Khoa CNTT, trường Đại học Công

nghệ

Đại học Quốc gia Hanoi

Isolation levelIsolation level

Page 16: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT16

Introduce Isolation is a property that defines how/when the

changes made by one operation become visible to other concurrent operations.

Of the four ACID properties in a DBMS, the isolation property is the one most often relaxed.

The isolation levels defined by the ANSI/ISO SQL standard are listed as follows:

Page 17: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT17

Read phenomena Dirty Read

Page 18: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT18

Read phenomena Nonrepeatable read

Page 19: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT19

Read phenomena

Phantom Reads

Page 20: 4.2 transaction

Hệ quản trị CSDL @ BM HTTT20

Isolation levels