1 / 106

Chapter 9 Technology of a database server

Chapter 9 Technology of a database server. Technology of database servers. Components: Optimizer - selects the data access strategy Access Methods Manager - executes the strategy RSS (Relational Storage System) OM (Object Manager) Buffer Manager - manages page accesses

sukey
Download Presentation

Chapter 9 Technology of a database server

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 9 Technology of a database server

  2. Technology of database servers • Components: • Optimizer - selects the data access strategy • Access Methods Manager - executes the strategy • RSS (Relational Storage System) • OM (Object Manager) • Buffer Manager - manages page accesses • Reliability Manager - manages faults • Concurrency Control Manager - manages the interference due to multi-user data access

  3. Approach • Top-Down • From theory to systems • Centered on the notion of transaction • Valid for both relational and object-oriented systems

  4. Definition of a Transaction • An elementary unit of work performed by an application, with specific features for what concerns correctness, robustness and isolation • Each transaction is encapsulated within two commands • begin transaction (bot) • end transaction (eot) • Within a transaction, one of the commands below is executed (exactly once) • commit work (commit) • rollback work (abort) • Transactional System: a system capable of providing the definition & execution of transactions on behalf of multiple, concurrent applications

  5. (Abstract) Example of Transaction begin transaction x := x - 10 y := y + 10 commit work end transaction Well-formed Transaction • A transaction starting with begin transaction, ending with end transaction, in whose execution just one of the two commands commit work or rollback work is executed, and without data management operations processed after the execution of the commit work or rollback work

  6. ACID Properties of Transactions • ACID is an acronym for: • Atomicity • Consistency • Isolation • Durability

  7. Atomicity • A transaction is an atomic unit of work • It cannot leave the database in an intermediate state: • a fault or error prior to commit causes the UNDO of the work made earlier • A fault or error after the commit may require the REDO of the work made earlier, if its effect on the database state is not guaranteed • Possible behaviors • Commit = normality (99.9%) • Rollback requested by the application = suicide • Rollback requested by the system = murder

  8. Consistency • Consistency amounts to requiring that the transaction does not violate any integrity constraint • Integrity constraint verification can be: • Immediate: during the transaction (the operation causing the violation is rejected) • Deferred: at the end of the transaction (if some integrity constraint is violated, the entire transaction is rejected)

  9. Isolation • Isolation requires that any transaction executes independently from the execution of all other concurrent transactions • [isolation requires that the concurrent execution of a collection of transaction yields to the same result as an arbitrary sequential execution of the same transactions] Durability (Persistence) • Durability requires that the effect of a transaction that has successfully committed be not lost (the effect will “last forever”)

  10. Transactions and system modules • Atomicity and durability are guaranteed by the Reliability Control System • Isolation is guaranteed by the Concurrency Control System • Consistency is managed during the normal query execution by the DBMS System (verification activities are generated by the DDL Compilers and executed during query processing)

  11. Concurrency control • Concurrency: highly desired • Measured in tps (transactions per second) - typical values are tens to hundreds to thousands tps • Typical examples: banks, airline reservation systems Architecture • Input-output operations on abstract objects x, y, z • Each input-output operation reads secondary memory blocks into buffer pages or writes buffer pages into secondary memory blocks • For simplicity: one-to-one mapping from blocks to pages Problem • Anomalies due to concurrent execution

  12. Anomaly 1: Update loss • Consider two identical transactions: • t 1 : r(x), x = x + 1, w(x) • t 2 : r(x), x = x + 1, w(x) • Assume initially x=2; after serial execution x=4 • Consider concurrent execution: • Transaction t1 Transaction t2botr1(x)x = x + 1botr2(x)x = x + 1w1(x)commitw2(x)commit • One update is lost, final value x=3

  13. Anomaly 2: Dirty read • Consider the same two transactions, and the followingexecution (note that the first transaction fails): • Transaction t1 Transaction t2botr1(x)x = x + 1w1(x)botr2(x)x = x + 1abortw2(x)commit • Critical aspect: t2 reads an intermediate state (dirty read)

  14. Anomaly 3: Inconsistent read • t1 repeats two reads: • Transaction t1 Transaction t2botr1(x)botr2(x)x = x + 1w2(x)commitr1(x)commit • t1 reads different values for x

  15. Anomaly 4: Ghost update • Assume the integrity constraint x + y + z = 1000; • Transaction t1 Transaction t2botr1(x)botr2(y)r1(y)y = y - 100r2(z)z = z + 100w2(y)w2(z)commitr1(z)s = x + y + zcommit • In the end, s = 110: the integrity constraint is not satisfied • t1 sees a ghost update

  16. Concurrency control theory • Transaction: sequence of read or write actions • Each transaction has a unique, system-assigned transaction identifier • Each transactions is initiated by the begin transaction command and terminated by end transaction (omitted) • Example: t 1 : r1(x) r1(y) w1(x) w1(y)

  17. Notion of Schedule • Represents the sequence of input/output operations presented by concurrent transactions • Example: S1 : r1(x) r2(z) w1(x) w2(z) • Simplifying assumption: we consider a commit-projection and ignore the transactions that produce an abort, removing all their actions from the schedule • This assumption is not acceptable in practice and will be removed

  18. Foundations of concurrency control • Objective: refuse the schedules that cause the anomalies • Scheduler: a system that accepts or rejects the operations requested by transactions • Serial schedule: one in which the actions of all the transactions appear in sequence S2 : r0(x) r0(y) w0(x) r1(y) r1(x) w1(y) r2(x) r2(y) r2(z) w2(z) • Serializable schedule: one that produces the same result as some serial schedule Sjof the same transactions • Requires a notions of equivalence between schedules • Progressive notions: view-equivalence, conflict-equivalence, two-phase locking, timestamp-based • Observation: a scheduler allows the identification of a more or less wide-ranging class of acceptable schedules at the cost of testing for equivalence

  19. View-Serializability • Preliminary definitions: • ri(x) reads-from wj(x) in a schedule S when wj(x) precedes ri(x) in S and there is no wk(x) between ri(x) and wj(x) in S • wi(x) in a schedule S is a final write if it is the last write of the object x to appear in S • View-equivalent schedules (SiVSj): if they possess the same reads-from relation and the same final writes • A schedule is called view-serializable if it is view-equivalent to some serial schedule • The set of view-serializable schedules is called VSR

  20. View-Serializability • Complexity of view-serializability: • Deciding on the view-equivalence of two given schedules: done by a polynomial algorithm • Deciding on the view serializability of a generic schedule: NP-complete problem

  21. Examples of view serializability • S3 : w0(x) r2(x) r1(x) w2(x) w2(z)S4 : w0(x) r1(x) r2(x) w2(x) w2(z)S5 : w0(x) r1(x) w1(x) r2(x) w1(z)S6 : w0(x) r1(x) w1(x) w1(z) r2(x) • S3 is view-equivalent to the serial schedule S4 (thus, it is view-serializable) • S5 is not view-equivalent to S4, but it is view-equivalent to the serial schedule S6, and thus this also is view-serializable • S7 : r1(x) r2(x) w2(x) w1(x)S8 : r1(x) r2(x) w2(x) r1(x)S9 : r1(x) r1(y) r2(z) r2(y) w2(y) w2(z) r1(z) • S7 corresponds to update loss, S8 to inconsistent reads and S9 to ghost updates; they are not view-serializable

  22. Conflict-serializability • Preliminary definition: • Action aiis in conflict with aj(i j), if both operate on the same object and at least one of them is a write. Two cases: • read-write conflicts (rw or wr) • write-write conflicts (ww). • Conflict-equivalent schedules (SiCSj): if they present the same operations and each pair of operations in conflict is in the same order in both the schedules • A schedule is therefore conflict-serializable if there is a serial schedule that is conflict-equivalent to it. The set of conflict-serializable schedules is called CSR • CSR is properly included into VSR

  23. Testing conflict-serializability • By means of the conflict graph, with; • a node for each transaction ti • an edge from tito tjif there is at least one conflict between an action aiand an action ajsuch that aiprecedes aj • A schedule is in CSR if and only if the graph is acyclic • Testing for cyclicity of a graph has a linear complexity with respect to the size of the graph itself • Conflict serializability is still too laborious in practice, especially with data distribution

  24. Two-phase locking • Used by almost all commercial DBMSs • Principle: • All read operations preceded by r_lock (shared lock) and followed unlock • All write operations preceded by w_lock (exclusive lock) and followed unlock A transaction following these rules is well formed wrt locking • When a transaction first reads and then writes an object it can: • Use a write lock • Move from shared lock to exclusive lock (lock escalation) • The lock manager receives these primitives from transactions and grants resources according to conflict table • When the lock is granted, the resource is acquired • At the unlock, the resource is released

  25. Behavior of the lock manager • Based on conflict table: Request Resource statefree r_locked w_lockedr_lock OK / r_locked OK / r_locked NO/ w_lockedw_lock OK / w_locked NO / r_locked NO / w_lockedunlock error OK / depends OK / free • A counter keeps track of the number of readers; the resource is released when the counter is set to zero. • If a lock request is not granted, the requesting transaction is put in a waiting state • The waiting ends when the resource is unlocked and becomes available • The locks already granted are stored in a lock table, managed by the lock manager

  26. Two-phase locking • Serializability requires in addition that locking is in two phases: A transaction, after having released a lock, cannot acquire other locks • Two phases: growing and shrinking • If a scheduler use well-formed transaction, conflict-based lock granting, and two-phases, then it produces the class of 2PL schedules • 2PL schedules are serializable and strictly included into CSR • Example of a schedule that is in CSR and not in 2PL: S12 : r1(x) w1(x) r2(x) w2(x) r3(y) w1(y)

  27. Strict two-phase-locking • We still need to remove the hypothesis of using a commit-projection • To do so, turn to strict 2PL (by adding a constraint):The locks on a transaction can be released only after having carried out the commit/abort operations • This version is used by commercial DBMSs; it eliminates the dirty read anomaly

  28. Concurrency control based on timestamps • New mechanism based on timestamp: • an identifier that defines a total ordering oftemporal events within a system • Every transaction is assigned a timestamp ts that represents the time at which the transaction begins • A schedule is accepted only if it reflects the serial ordering of thetransactions based on the value of the timestamp of each transaction

  29. Basic timestamp mechanism • Each scheduler has a counter RTM(x) and WTM(x) for each object • Each scheduler receives timestamped read and write requests upon objects: • read(x,ts): if ts < WTM(x) then the request is rejected and the transaction is killed, otherwise the request is accepted and RTM(x) is set equal to the greater of RTM(x) and ts • write(x,ts): if ts < WTM(x) or ts < RTM(x) then the request is rejected and the transaction is killed, otherwise the request is accepted and WTM(x) is set equal to ts Under assumption of commit-projection • The method causes the forced abort of a large number of transactions • To remove the commit-projection assumption, must buffer writes until commit, and this introduces waiting of transactions

  30. Example of timestamp-based concurrency control Request Response New value read(x,6) ok read(x,8) ok RTM(x) = 8 read(x,9) ok RTM(x) = 9 write(x,8) no t8 killed write(x,11) ok WTM(x) = 11 read(x,10) no t10 killed

  31. Multiversion concurrency control • Main idea: writes generate new copies, reads make access to the correct copy • Writes generate new copies each with a WTM. At any time, N >1 copies of each object x are active, with WTMN(x). There is only one global RTM(x) • Mechanism: • read(x,ts): is always accepted. xkselected for reading such that: if ts > WTMN(x), then k= N, otherwise kis taken such that WTMk(x) < ts < WTMk+1(x) • write(x,ts): if ts < RTM(x) the request is refused, otherwise a new version of the item of data is added (N increased by one) with WTMN(x) = ts • Old copies are discarded when there are no read transactions interested in their values

  32. Taxonomy of VSR, CSR, 2PL and TS

  33. Comparison 2PL vs TS • In 2PL the transactions are put in waiting. In TS they are killed and then restarted • The serialization order in 2PL is imposed by conflicts, while in TS it is imposed by the timestamps • The necessity of waiting for the commit of the transaction causes strict 2PL and buffering of writes in TS • 2PL can give rise to deadlocks (discussed next) • Restarting costs more than waiting: 2PL wins!

  34. Lock management • Interface: • r_lock(T, x, errcode, timeout) • w_lock(T, x, errcode, timeout) • unlock(T, x) T: transaction identifierX: data elementtimeout: max wait in queue • If timeout expires, errcode signals an error, typically the transaction rolls back and restarts

  35. Hierarchical locking • In many real systems locks can be specified at different granularity, e.g. tables, fragments, tuples, fields. These are organized in a hierarchy (possibly a directed acyclic graph) • 5 locking modes: • 2 are shared and exclusive, renamed as: • XL: exclusive lock • SL: shared lock • 3 are new: • ISL: intention shared lock • IXL: intention exclusive lock • SIXL: shared intention-exclusive lock • The choice of lock granularity is left to application designers; • too coarse: many resources are blocked • too fine: many locks are requested

  36. Hierarchical locking protocol • Locks are requested from the root to descendents in a hierarchy • Locks are released starting at the node locked and moving up the tree • In order to request an SL or ISL on a node, a transaction must already hold an ISL or IXL lock on the parent node • In order to request an IXL, XL, or SIXL on a node, a transaction must already hold an SIXL or IXL lock on the parent node • The new conflict table is shown in the next slide

  37. Conflicts in hierarchical locking Resource state Request ISL IXL SL SIXL XL ISL OK OK OK OK NoIXL OK OK No No NoSL OK No OK No NoSIXL OK No No No NoXL No No No No No

  38. Lock options offered by SQL2 • Some transactions are defined as read-only (they can’t request exclusive locks) • The level of isolation can be set for each transactions • Serializable guarantees max isolation: keeps predicate locks so as not to change the content even of aggregate functions evaluated on data sets • Repeatable read is equal to strict 2PL (note: repeated reading of values are the same, but repeated readings of aggregates over data are not) • Committed read excludes the reading of intermediate states (uncommitted data) • Uncommitted read does no concurrency control at all on read

  39. Deadlocks • Created by concurrent transactions, each of which holds and waits for resources held by others • Example: • t1: read(x), write(y) • t2: read(y), write(x) • Schedule: r_lock1(x), r_lock2(y), read1(x), read2(y) w_lock1(y), w_lock2(x) • This is deadlock! • Deadlock probability grows linearly with number of transactions and quadratically with the number of lock requests of each transaction (under suitable uniformity assumptions)

  40. Deadlock resolution techniques • A deadlock is a cycle in the wait-for graph which indicates wait conditions between transactions • (node=transaction, arc=wait condition). • Three techniques:1. Timeout (problem: choice of timeout with trade-offs)2. Deadlock detection3. Deadlock prevention • Deadlock detection: performs the search for cycles in a wait-for graph • Deadlock prevention: kills the transactions that could cause a cycle (thus: it overkills) • Options for choosing the transaction to kill: • via pre-emptive policies or non-pre-emptive policies

  41. Buffer management • Buffer: a large area of the main memory pre-allocated to the DBMS and shared among the various transactions • The buffer is organized in pages, of a size equal or multiple of the input/output blocks used by the operating system; • Size of pages: from a few Kbytes to about a hundred Kbytes • Access times to main memory: six orders of magnitude faster than access times to secondary memory • It can possibly store the entire database (we call it a main-memory resident database)

  42. Buffer manager organization • Provides primitives fix, use, unfix, flush and force. Manages input/output operations in response to these primitives • The policies of buffer management are similar to those of main memory management by the operating systems, subject to: • Principle of data locality: currently referenced data has a greater probability of being referenced in the future • Empirical law: only 20% of data is typically accessed by 80% of applications

  43. Primitives for buffer management • fix: used to load a page into the buffer, requires read operations from the secondary memory only when the chosen page is not already resident in the buffer • After the operation, the page is loaded and valid, that is, allocated to an active transaction; a pointer to the page is returned to the transaction • use: used by the transaction to gain access to the page previously loaded in the memory, confirming its allocation in the buffer and its status as a valid page • unfix: indicates that the transaction has terminated the use of the page, which is no longer valid • force: synchronously transfers a page from the buffer manager to the secondary memory • flush: Transfers invalid pages to secondary memory asynchronously and independently of the active transactions

  44. Management of the fix primitive • Search in the buffer for requested page, if found the address is returned • Selection of a free page in the buffer, read of page from secondary memory, the page address is returned • Selection of a non free page in the buffer, called victim: • only among non-valid pages (fix can fail when the search fails) • also among valid pages allocated to other transactions • Victim is rewritten to secondary memory invoking the flush operation, then the page is read from secondary memory and the page address is returned

  45. Buffer management policies • The steal policy allows the buffer manager to select an active page allocated to another transaction as a victim • The no-steal policy excludes this possibility • The force policy requires that all the active pages of a transaction are written to secondary memory before committing • The no-force policy entrusts the writing of the pages of a transaction to the buffer manager • The no-steal/no-force pair of policies is preferred by the DBMSs • There is also the possibility of ‘anticipating’ the loading and unloading times of the pages, by means of pre-fetching and pre-flushing policies

  46. Relationship between buffer manager and file system • The file system is responsible for knowing the structure of the secondary memory in directories and the current situation of secondary memory use. It must identify which blocks are free and which are allocated to files • DBMSs use the file system for the following functions: • The creation (create) and removal (delete) of a file • The opening (open) and closing (close) of a file. • read(fileid,block,buffer) for the direct access to a block of a file which is transcribed to the buffer page. • read_seq(fileid,f-block,count,f-buffer) for sequential access to a fixed number (count) of blocks of a file • The dual primitives write and write_seq

  47. Reliability control • Responsible for executing the transactional commands: • begin transaction (B) • commit work (C) • rollback work (A, for abort) and the primitives for recovery after malfunctions: • warm restart and cold restart • Ensures atomicity and durability • Uses as main data structure the log: • A permanent archive which registers the various actions carried out by the DBMS • Two metaphors: Arianna’s thread, Hansel and Gretel’s crumbs of bread

  48. Architecture of the reliability control system

  49. Stable memory • A memory that is failure-resistant • It is an abstraction, in that no memory can have zero probability of failure (but replication and robust writing protocols can bring such a probability close to zero) • A failure of stable memory is assumed as catastrophic and impossible, at least in this context • Organized in different ways depending on the criticality of the application: • a tape unit • a pair of devices of different kind (e.g.: a tape and a disk) • two mirrored disk units

  50. Log organization • The log is a sequential file managed by the reliability control system, written in the stable memory • The actions carried out by the various transactions are recorded in the log in chronological order (written sequentially to the top block) • There are two types of log record • Transaction records • begin, B(T) • insert, I(T,O,AS) • delete, D(T,O,BS) • update, U(T,O,BS,AS) • commit, C(T), or abort, A(T) • System records • dump (rare) • checkpoint (more frequent)

More Related