MySQL: Guides and Practical Know-how | Page 5 | mironsoft Blog
MySQL
-
Sep 27, 2025
InnoDB replaced MyISAM as the default storage engine back in MySQL 5.5, yet MyISAM still turns up in grown systems, often unnoticed. Anyone who doesn't understand the transaction behavior, locking granularity and crash safety of the two engines risks data loss during migrations and legacy maintenance. This article explains the differences in detail and shows what a clean migration to InnoDB looks like.
-
Sep 22, 2025
Declarative Schema replaces old InstallScripts, but only when tables, constraints, indexes, and patches are kept cleanly separated. These five mistakes cause most of the problems in Magento projects.
-
Sep 22, 2025
One thread per connection works well as long as the number of concurrent connections stays modest. Once PHP-FPM pools or similar setups generate thousands of parallel connections, that model tips over and the server loses throughput instead of gaining it. The thread pool plugin deliberately caps how many threads actually run at once.
-
Sep 20, 2025
An unencrypted database backup sitting in external storage or with a cloud provider is a full export of every customer record the moment an attacker gains access to that storage. This article shows how Percona XtraBackup produces encrypted backups using the --encrypt options, how keys are managed securely, how the restore workflow with decryption plays out, and how to build a retention strategy for several backup generations under different keys.
-
Sep 20, 2025
Global Transaction Identifiers solve a problem every operator has run into: manually hunting down the right binlog position for CHANGE MASTER TO after a crash. Migrating an existing, position-based replication setup to GTIDs without losing data buys you automatic failover handling and eliminates an entire class of operational mistakes at once.
-
Sep 17, 2025
Containerized databases behave differently from classic database installations: init directories, volume persistence and health check synchronization are concepts that need to be understood before the first production container goes live. Anyone who skips these fundamentals ends up fighting data loss, race conditions and non-reproducible development environments later on.
-
Sep 16, 2025
Generated columns automatically compute a value from other columns in the same row and, unlike plain expressions in a WHERE clause, can be indexed directly. This article explains the difference between STORED and VIRTUAL, shows indexing strategies, and covers concrete use cases for JSON extraction and computed totals in MySQL 8.
-
Sep 9, 2025
InnoDB is considered a row-level locking engine, yet table locks regularly occur in practice, for example during ALTER TABLE or explicit LOCK TABLES. This article explains how InnoDB technically implements row locks, when table locking becomes unavoidable, and how the lock modes S, X, IS and IX work together as intention locks.
-
Sep 8, 2025
Date functions are one of the areas where databases differ the most, even though the underlying task seems simple. This article compares date arithmetic, formatting, time zone handling, and extraction of individual date parts in PostgreSQL, MySQL, SQL Server, and Oracle using concrete, runnable examples.
-
Sep 6, 2025
The InnoDB buffer pool decides whether a query is answered from memory in microseconds or triggers a slow disk operation. Anyone who sizes innodb_buffer_pool_size incorrectly or misunderstands the LRU list gives up performance that no index tuning can recover. This article explains the buffer pool's structure, sizing methodology and monitoring with real SQL examples.