Transaction management in the R* distributed database management system
ACM Transactions on Database Systems (TODS)
Concurrency control performance modeling: alternatives and implications
ACM Transactions on Database Systems (TODS)
On timeout for global deadlock detection in decentralized database systems
Information Processing Letters
System level concurrency control for distributed database systems
ACM Transactions on Database Systems (TODS)
ACM Computing Surveys (CSUR)
Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects
Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects
Transaction Processing: Concepts and Techniques
Transaction Processing: Concepts and Techniques
Massive Stochastic Testing of SQL
VLDB '98 Proceedings of the 24rd International Conference on Very Large Data Bases
RacerX: effective, static detection of race conditions and deadlocks
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Rx: Treating bugs as allergies—a safe method to survive software failures
ACM Transactions on Computer Systems (TOCS)
Subsystems of Processes with Deadlock Avoidance
IEEE Transactions on Software Engineering
Generating thousand benchmark queries in seconds
VLDB '04 Proceedings of the Thirtieth international conference on Very large data bases - Volume 30
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
H-store: a high-performance, distributed main memory transaction processing system
Proceedings of the VLDB Endowment
Architecture of a Database System
Foundations and Trends in Databases
The theory of deadlock avoidance via discrete control
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Serializable isolation for snapshot databases
ACM Transactions on Database Systems (TODS)
The Petri net markup language: concepts, technology, and tools
ICATPN'03 Proceedings of the 24th international conference on Applications and theory of Petri nets
Proceedings of the 19th international conference on Parallel architectures and compilation techniques
Deadlock immunity: enabling systems to defend against deadlocks
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Automated SQL query generation for systematic testing of database engines
Proceedings of the IEEE/ACM international conference on Automated software engineering
Distributed Database Management Systems: A Practical Approach
Distributed Database Management Systems: A Practical Approach
Proceedings of the 33rd International Conference on Software Engineering
Static deadlock detection for java libraries
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Applying transactional memory to concurrency bugs
ASPLOS XVII Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems
MagicFuzzer: scalable deadlock detection for large-scale applications
Proceedings of the 34th International Conference on Software Engineering
Testing Database-Centric Applications for Causes of Database Deadlocks
ICST '13 Proceedings of the 2013 IEEE Sixth International Conference on Software Testing, Verification and Validation
REDACT: preventing database deadlocks from application-based transactions
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Hi-index | 0.00 |
Many organizations deploy applications that use databases by sending Structured Query Language (SQL) statements to them and obtaining data that result from the execution of these statements. Since applications often share the same databases concurrently, database deadlocks routinely occur in these databases resulting in major performance degradation in these applications. Database engines do not prevent database deadlocks for the same reason that the schedulers of operating system kernels do not preempt processes in a way to avoid race conditions and deadlocks - it is not feasible to find an optimal context switching schedule quickly for multiple processes (and SQL statements), and the overhead of doing it is prohibitive. We created a novel approach that combines run-time monitoring, which automatically prevents database deadlocks, with static analysis, which detects hold-and-wait cycles that specify how resources (e.g., database tables) are held in contention during executions of SQL statements. We rigorously evaluated our approach. For a realistic case of over 1,200 SQL statements, our algorithm detects all hold-and-wait cycles in less than two seconds. We built a toolset and experimented with three applications. Our tool prevented all existing database deadlocks in these applications and increased their throughputs by up to three orders of magnitude.