Mysql shore like
MySQL (SHORE-LIKE) Features¶
In the most modern versions of MySQL 8.4 LTS+, you can aggressively disable or bypass core features for specialized tasks like bulk loading, but you cannot remove them as modularly as in a research systems like SHORE.
1. Logging (Redo & Binary)¶
- Redo Log (Physical Logging): You can completely disable the InnoDB redo log globally for data loading using ALTER INSTANCE DISABLE INNODB REDO_LOG;. This stops physical logging and doublewrite buffering, but the instance will not be recoverable from a crash until re-enabled.
- Binary Log (Logical Logging): You can disable binary logging at startup with the –disable-log-bin option or for a specific session with SYSTEM_VARIABLES_ADMIN privileges using SET sql_log_bin = 0;.
2. Locking¶
You cannot turn off the Lock Manager, but you can instruct it to do nothing:
- Isolation Levels: Set your transaction to READ UNCOMMITTED to perform dirty reads, which avoids acquiring shared locks for SELECTs.
- Unique/Foreign Key Checks: During bulk loads, you can disable these expensive integrity locks via SET unique_checks = 0; and SET foreign_key_checks = 0;.
3. Latching & Single-Threading¶
While you can throttle concurrency, you cannot make MySQL truly single-threaded to eliminate latches.
- innodb_thread_concurrency = 1: This limits how many threads can enter the InnoDB kernel at once to process rows. However, MySQL still runs many background threads (I/O, master, purge, and log writer threads).
- The Latching Problem: Latches protect memory structures from these background threads too. Even if you only have one user connection, a background “Purge” thread might be cleaning up old versions while your query reads a page. Because these threads share memory, latches are physically required to prevent memory corruption.
4. Buffer Management¶
There is no “off” switch for the buffer manager because MySQL is a disk-based engine at its core.
- Bypassing: You can’t bypass the buffer pool, but you can effectively hide its overhead by making it large enough to fit the entire dataset in memory innodb_buffer_pool_size.
- Alternative: If you want zero buffer management, you would typically use a specialized In-Memory Engine like the NDB (Cluster) storage engine, though this is a fundamentally different architecture from standard MySQL/InnoDB.