Posts

Showing posts from February, 2021

Architecture of a database management system

Image
There’s no common blueprint for database management system design. Every database is built slightly differently, and component boundaries are somewhat hard to see and define. Even if these boundaries exist on paper (e.g., in project documentation), in code seemingly independent components may be coupled because of performance optimizations, handling edge cases, or architectural decisions. Hence in this article I will be defining a common architecture (component + interfaces between them) of DBMS, that I believe every DB vendor thrive for. Quick Links 1. Architecture 2. Components and their Interaction 2.1. Transport Subsystem 2.2. Query Processor 2.3. Execution Engine 2.4. Storage Engine DBMS Architecture Database management systems use a client/server model, where database system instances (nodes) take the role of servers, and application instances take the role of client

MySQL server has gone away while restoring backup

Image
Quick Links 1. Error 2. Explanation 3. Solution One day I was restoring the mysqldump, shared by one of my team mate, into my local machine. I was using HeidiSQL as the client, but believes that same has happened if I were using command line utility. All was going well, the dump is being restored. But after a while, as the database is being restored, I got the following error: Error SQL Error (2006): MySQL server has gone away Explanation Now, let us see why we got this error. Since it happens due to the MySQL configuration system variable max_allowed_packet setting , hence the timing of getting the error will depend upon when you hit that limit in your database restore. max_allowed_packet  is basically the maximum size (in bytes) of one packet or any generated/intermediate string exchanged between client and MySQL server. Straight from the documentation A communication packet is a single SQL statemen
Back To Top