(Go: >> BACK << -|- >> HOME <<)

SlideShare a Scribd company logo
Copyright © 2023, Oracle and/or its affiliates | Confidential: Internal/Restricted/Highly Restricted
MySQL - InnoDB
MyDBOps
June 08, 2024
1
About me
2 Copyright © 2024, Oracle and/or its affiliates
● Mayank Prasad
● M.Tech in Information Technology (IIIT Bangalore)
● Part of MySQL Server Development since 2011
● Part of MySQL-InnoDB Storage Engine Development team since 2017
Safe Harbor Statement
3
The following is intended to outline our general product direction. It is intended
for information purposes only, and may not be incorporated into any contract.
It is not a commitment to deliver any material, code, or functionality, and
should not be relied upon in making purchasing decisions. The development,
release, and timing of any features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.
Copyright © 2024, Oracle and/or its affiliates
4
➡Configurable REDO logs
➡INSTANT ADD/DROP COLUMN
➡Q&A
Agenda
Copyright © 2024, Oracle and/or its affiliates
5
➡Configurable REDO logs
➡INSTANT ADD/DROP COLUMN
➡Q&A
Agenda
Copyright © 2024, Oracle and/or its affiliates
● REDO Logs are WAL for InnoDB
● To avoid flushing dirty pages (16K) to disk
every time they change.
● An on disk circular buffer
● Snake Metaphor : A snake eating it’s own tail.
Dynamic Configuration of REDOs
6
Introduction
Copyright © 2024, Oracle and/or its affiliates
head
head
head
File 1
Log file size
7
Dynamic Configuration of REDOs
Introduction
● Longer REDOs => Less page flushes but Longer recovery. Slower slow shutdown.
● Shorter REDOs => More page flushes but shorter recovery. Performance impact.
● Trial and error to see what suits according to Workload
● Can specify size of REDO Log file (innodb_log_file_size)
● But REDO file size Can’t be changed at run time. A server restart is needed
● There were requests to make it dynamic.
Copyright © 2024, Oracle and/or its affiliates
● Still an on disk circular buffer but spanned across
multiple files
● Instead of file size, we talk in terms of capacity
(innodb_redo_log_capacity) in bytes.
● Can be changed at runtime i.e. no server restart.
● Number of files and their size is calculated automatically
Dynamic Configuration of REDOs
8
Solution
Copyright © 2024, Oracle and/or its affiliates
head
head
head
File 2
File N
File 1
File …
REDO log capacity
• A new dedicated folder: #innodb_redo in MySQL’s datadir
• InnoDB creates 32 redo log
fi
les
• If more space is needed, space can be reclaimed by deleting old “not needed”
fi
les and create new to be reused for
new REDOs.
• Not needed : Files containing REDOs which are behind checkpoint LSN.
Dynamic Configuration of REDOs
9 Copyright © 2024, Oracle and/or its affiliates
Solution contd
10
• checkpoint_lsn (Innodb_redo_log_checkpoint_lsn) :
• an LSN point up to which all changes to the pages are guaranteed to have already been written and fsynced back to tablespace
fi
les – basically, the still
needed portion of redo log starts here.
• current_lsn (Innodb_redo_log_current_lsn) :
• the last written position in the redo log. That write could still be buffered inside MySQL processes buffer.
•
fl
ushed_to_disk_lsn (Innodb_redo_log_flushed_to_disk_lsn) :
• the last position in the redo log that InnoDB has been
fl
ushed to disk.
Dynamic Configuration of REDOs
Solution contd
Copyright © 2024, Oracle and/or its affiliates
11
Dynamic Configuration of REDOs
Solution contd
• When needed, the log files governor will perform some cleanup and some active files that are not needed
anymore will become the new spare ones
• When the background thread is not able to remove a log
fi
le from the left to put it to the right, the user
transaction will get stuck waiting for REDO buffers to be written to disk. DBAs get warning in the error log
notifying them to increase the InnoDB Redo Log Capacity
[Warning] [MY-013865] [InnoDB] Redo log writer is waiting for a new redo log file.
Consider increasing innodb_redo_log_capacity.
Copyright © 2024, Oracle and/or its affiliates
Observability
12
• The new Redo Log is instrumented in performance_schema in the table innodb_redo_log_files
• This means there are 5 active redo log
fi
les and 27 (32-5) spare ones (_tmp):
Dynamic Configuration of REDOs
Copyright © 2024, Oracle and/or its affiliates
13
● Resizing
• Eg : make capacity to 200MB
SET GLOBAL innodb_redo_log_capacity =200*1024*1024;
• Resizing Up
• Instant
• Resizing Down
• Need to wait for existing REDOs to get truncated.
• Happens in background
• Resizing status
mysql> SHOW STATUS LIKE 'Innodb_redo_log_resize_status';
+-------------------------------+------------------+
| Variable_name | Value |
+-------------------------------+------------------+
| Innodb_redo_log_resize_status | Resizing down |
+-------------------------------+------------------+
mysql> SHOW STATUS LIKE 'Innodb_redo_log_resize_status';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| Innodb_redo_log_resize_status | OK |
+-------------------------------+-------+
• Current REDO log capacity
mysql> SHOW STATUS LIKE 'Innodb_redo_log_capacity_resized';
+----------------------------------+-----------+
| Variable_name | Value |
+----------------------------------+-----------+
| Innodb_redo_log_capacity_resized | 104857600 |
+----------------------------------+-----------+
Dynamic Configuration of REDOs
Observability contd
Copyright © 2024, Oracle and/or its affiliates
14
➡Configurable REDO logs
➡INSTANT ADD/DROP COLUMNS
➡Q&A
Agenda
Copyright © 2024, Oracle and/or its affiliates
● InnoDB on disk Row Format
INSTANT ADD/DROP Column
15
Introduction
Row Metadata Row Data
• Null bitmap
• Length of var length fields
• Etc.
Copyright © 2024, Oracle and/or its affiliates
16
Row Metadata Row Data
Fixed size row Header
Variable size row Header
6 bytes
(REDUNDANT)
5 bytes
(COMPACT/DYNAMIC/COMPRESSED)
Null bitmap*
0 0 0 1 0 1 1 0 0
…
Var length fields lengths
L1
L2
L3
Ln …
INSTANT ADD/DROP Column
InnoDB Row Header
*null bitmap is not present in REDUNDANT row format
Copyright © 2024, Oracle and/or its affiliates
17
● Each record header keeps columns specific info.
● Add/Drop column would need each row header to be modified.
● Causes table rebuild
● Bigger the table, more the time it take.
● Costly - time, disk, resource, schedule
● Table lock
● Replication - Master does it. Then slave does the same.
● Big requirement from users/customers
INSTANT ADD/DROP Column
InnoDB Row Format Impact
Copyright © 2024, Oracle and/or its affiliates
● Only metadata change.
● No table rebuild.
● No table lock required for long duration
● Saves time/space/resources
● Replication would benefit.
INSTANT ADD/DROP Column
18
Idea behind solution
Copyright © 2024, Oracle and/or its affiliates
● MySQL 8.0.12
● ALTER TABLE t1 ADD COLUMN … ALGORITHM=INSTANT;
● Limitations
● Only ADD COLUMN support
● Column can be added only at the end. AFTER/FIRST clause throws error.
● New design
● Can add column at any place.
● Design work for DROP column as well. So column can be dropped from any place.
● ALTER TABLE t1 ADD COLUMN [AFTER/FIRST] … ALGORITHM=INSTANT;
● ALTER TABLE t1 DROP COLUMN … ALGORITHM=INSTANT;
INSTANT ADD/DROP Column
19
Earlier attempt and new design
Copyright © 2024, Oracle and/or its affiliates
20
INSTANT ADD/DROP Column
Solution : New design, Row versions
● Introduced “Row versioning”
● Every time a new INSTANT ADD/DROP Done, bump the versions
● Keep information of columns in the version they are ADDed or
DROPped.
● Stamp this version on the row when it is inserted/updated.
● When fetched, rows are transformed (if needed) to current row version.
Copyright © 2024, Oracle and/or its affiliates
21
Next Row Offset
Num Columns
HEAP Number
1|2 bytes
offset?
NUM
owned
INFO
BITS
1 bit 16 bits
10 bits
13 bits
4 bits
4 bits
6 bytes header
(REDUNDANT)
Free bit
6 bytes header
Version
8 bits
1 …
Preceding version byte is present
INSTANT ADD/DROP Column
Solution : On disk row format change
Copyright © 2024, Oracle and/or its affiliates
22
Next Row Offset
HEAP Number Status
NUM
owned
INFO
BITS
3 bits 16 bits
13 bits
4 bits
4 bits
5 bytes header
(COMPACT/DYNAMIC/COMPRESSED)
Free bit
5 bytes header
Version
8 bits
1 …
Preceding version byte is present
INSTANT ADD/DROP Column
Solution : On disk row format change contd.
Copyright © 2024, Oracle and/or its affiliates
23
Fixed size row Header
Variable size row Header
Row Data
INSTANT ADD/DROP Column
Solution : On disk row format change contd.
● A row with no row version.
● Bit in INFO BITS is 0.
● No version on row on disk
0
● A row with no row version.
● Bit in INFO BITS is 1.
● Version is stamped on row on disk
Copyright © 2024, Oracle and/or its affiliates
Row Metadata
Fixed size row Header
Variable size row Header
Row Data
Row Metadata
Version
1
24
INSTANT ADD/DROP Column
Solution : Transforming rows while fetch
New info on rows on disk
• rec_version
New column metadata
• version_added : The row version in which the column I added (0 if it was present during CREATE)
• version_dropped : The row version in which the column is dropped (0 if it is present currently)
When a record is read, with above informations, it is easy to determine which columns are present in the record.
And while fetching :
• Ignore all the columns value with version_dropped > 0
• Use default value for columns with version_added > rec_version
Copyright © 2024, Oracle and/or its affiliates
25
SQL C1 C2 C3 C4 C5 Version
CREATE TABLE Y Y Y Y - 0
ALTER TABLE … DROP C3 Y Y D Y - 1
ALTER TABLE … ADD C5 … DEFAULT C5Default Y Y - Y A 2
Column version_added version_dropped Default value
C1 0 0
C2 0 0
C3 0 1
C4 0 0
C5 2 0 C5Default
On disk R1 in V0 Vc1 Vc2 Vc3 Vc4
Row fetched Vc1 Vc2 Vc4 Vc5
INSTANT ADD/DROP Column
Solution : Transforming rows while fetch
• (nothing stamped) rec_version 0
• Current version is 2.
• C3 was present on disk and to be ignored
• C5 wasn’t present so need to populate
default value
Insert
Copyright © 2024, Oracle and/or its affiliates
INSTANT ADD/DROP Column
26
Solution : Flow explanation
No changes to rows on table!
Metadata (eg: Default values)
Copyright © 2024, Oracle and/or its affiliates
DML
INSERT
DML
UPDATE
DDL
ALTER TABLE … ADD/DROP COLUMN…
,ALGORITHM=INSTANT;
TABLE
R2’ : Row with no version
R3 : Row with no version
R4 : Row with version 1
R3’ : Row with version 1
Data
Dictionary
Core DD tables
System tables
R1 : Row with no version
———————————
Fetch
R1
R2’
R3’
R4
R2 : Row with no version
———————————
Row data
Metadata
R1 and R2’ transformed
27
INSTANT ADD/DROP Column
Default ALGORITHM
● For ALTER TABLE … ADD/DROP COLUMN …
● ALGORITHM=INSTANT is default. I.e. if not specified explicitly we try to use INSTANT
algorithm.
● If INSTANT is not possible, it falls back to ALGORITHM=INPLACE/COPY.
● Once OPTIMIZE TABLE and other ALTER TABLE DDLs, which cause tables to rebuild, are
executed, INSTANT metadata is reset.
● Column metadata is reset in DD
● row_version is reset to 0.
● TRUNCATE TABLE resets the INSTANT metadata (no row on disk to interpret).
Copyright © 2024, Oracle and/or its affiliates
28
INSTANT ADD/DROP Column
ROW version limit
● Not frequent operations.
● Maximum row versions allowed are 64.
● After that ALGORITHM=INSTANT throws with following error
ERROR 4080 (HY000): Maximum row versions reached for table test/t1. No more columns can be added or dropped
instantly. Please use COPY/INPLACE.
● If ALGORITHM=INSTANT is not specified, it falls back to ALGORITHM=COPY automatically.
● As it rebuilds the table, INSTANT Metadata from each row is reset
● Column metadata is reset in DD
● row_version is reset to 0.
Copyright © 2024, Oracle and/or its affiliates
29
INSTANT ADD/DROP Column
Compatibility : Upgrade
● Earlier ADD COLUMN has different row format.
● No need to transform any rows on disk during upgrade.
● After upgrade we might have table which has
● Rows INSERTED before earlier INSTANT ADD was done
● Rows INSERTED after earlier INSTANT ADD was done
● Rows INSERTED before new INSTANT ADD/DROP was done
● Rows INSERTED after new INSTANT ADD/DROP was done
● These rows are transformed correctly when fetched and.
● Once table is rebuilt (OPTIMIZE TABLE, ALTER etc.) Instant metadata is cleared.
Copyright © 2024, Oracle and/or its affiliates
30
INSTANT ADD/DROP Column
Compatibility : IMPORT/EXPORT
● EXPORT
● We write INSTANT metadata in the cfg file.
● IMPORT
● cfg file is must
● allowed even if target table has only the columns which exists (eg: CREATE TABLE LIKE)
● INSTANT metadata is populated from CFG file. Rows are interpreted correctly.
SOURCE
(INSTANT ADD/DROP)
DESTINATION
(INSTANT ADD/DROP)
ALLOWED REMARK
NO NO YES -
YES NO YES -
NO YES NO -
YES YES YES/NO Allowed iff INSTANT metadata
matches
Copyright © 2024, Oracle and/or its affiliates
31
INSTANT ADD/DROP Column
Observability
mysql> CREATE TABLE t1 (c1 INT);
Query OK, 0 rows affected (0.03 sec)
mysql> SELECT N_COLS, INSTANT_COLS, TOTAL_ROW_VERSIONS
FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE NAME LIKE
"%t1%";
+--------+--------------+--------------------+
| N_COLS | INSTANT_COLS | TOTAL_ROW_VERSIONS |
+--------+--------------+--------------------+
| 4 | 0 | 0 |
+--------+--------------+--------------------+
1 row in set (0.02 sec)
mysql> SELECT HAS_DEFAULT, DEFAULT_VALUE FROM
INFORMATION_SCHEMA.INNODB_COLUMNS WHERE NAME LIKE "%c1%";
+-------------+------------------------------+
| HAS_DEFAULT | DEFAULT_VALUE |
+-------------+------------------------------+
| 0 | NULL |
+-------------+------------------------------+
1 row in set (0.03 sec)
mysql> ALTER TABLE t1 ADD COLUMN c2 INT DEFAULT 100
FIRST, ALGORITHM=INSTANT;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SELECT N_COLS, INSTANT_COLS, TOTAL_ROW_VERSIONS
FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE NAME LIKE
"%t1%";
+--------+--------------+--------------------+
| N_COLS | INSTANT_COLS | TOTAL_ROW_VERSIONS |
+--------+--------------+--------------------+
| 5 | 0 | 1 |
+--------+--------------+--------------------+
1 row in set (0.02 sec)
mysql> SELECT HAS_DEFAULT, DEFAULT_VALUE FROM
INFORMATION_SCHEMA.INNODB_COLUMNS WHERE NAME LIKE "%c2%";
+-------------+------------------------------+
| HAS_DEFAULT | DEFAULT_VALUE |
+-------------+------------------------------+
| 1 | 0x3830303030303634 |
+-------------+------------------------------+
1 row in set (0.03 sec)
1, if column is
added earlier
INSTANT ADD
implementation
Copyright © 2024, Oracle and/or its affiliates
INSTANT ADD/DROP Column
32
Example and Limitation
Copyright © 2024, Oracle and/or its affiliates
Here is what I tried on my system :
mysql> select count(*) from t1;
+----------+
| count(*) |
+----------+
| 8388608 |
+----------+
1 row in set (0.22 sec)
mysql> alter table t1 add column c4 char(10), algorithm=copy;
Query OK, 8388608 rows affected (29.17 sec)
Records: 8388608 Duplicates: 0 Warnings: 0
mysql> alter table t1 add column c5 char(10), algorithm=instant;
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
33
INSTANT ADD/DROP Column
Limitations
● No support for COMPRESSED tables (seldom used)
● No support for tables with a full-text index
● No support for table residing in DD Tablespace (Not needed)
● No support for temporary tables
Blog 1 link here
Blog 2 link here
Copyright © 2024, Oracle and/or its affiliates
34
Thank you
Copyright © 2024, Oracle and/or its affiliates
The Snake Metaphor
36
● A snake which can move from one cage to another connected cage.
● Needed redo log => snake body
● Each redo file => A cage snake moves into.
● When reached to the last cage, cages from left to be move to right side so that snake can
move forward.
● Size of snake shirks when checkpoint_lsn moves forward
● Size of snake increases when more redos are written.
Dynamic Configuration of REDOs

More Related Content

Similar to MySQL InnoDB Storage Engine: Deep Dive - Mydbops

Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Geir Høydalsvik
 
What to expect from MariaDB Platform X5, part 1
What to expect from MariaDB Platform X5, part 1What to expect from MariaDB Platform X5, part 1
What to expect from MariaDB Platform X5, part 1
MariaDB plc
 
Using Apache Hive with High Performance
Using Apache Hive with High PerformanceUsing Apache Hive with High Performance
Using Apache Hive with High Performance
Inderaj (Raj) Bains
 
SAP BO and Teradata best practices
SAP BO and Teradata best practicesSAP BO and Teradata best practices
SAP BO and Teradata best practices
Dmitry Anoshin
 
Benchmarking for postgresql workloads in kubernetes
Benchmarking for postgresql workloads in kubernetesBenchmarking for postgresql workloads in kubernetes
Benchmarking for postgresql workloads in kubernetes
DoKC
 
Advantages of migrating to db2 v11.1
Advantages of migrating to db2 v11.1Advantages of migrating to db2 v11.1
Advantages of migrating to db2 v11.1
Rajesh Pandhare
 
11158682984719608417 emea11 fallback
11158682984719608417 emea11 fallback11158682984719608417 emea11 fallback
11158682984719608417 emea11 fallback
Locuto Riorama
 
11158682984719608417 emea11 fallback
11158682984719608417 emea11 fallback11158682984719608417 emea11 fallback
11158682984719608417 emea11 fallback
Locuto Riorama
 
DB2 for z/OS Bufferpool Tuning win by Divide and Conquer or Lose by Multiply ...
DB2 for z/OS Bufferpool Tuning win by Divide and Conquer or Lose by Multiply ...DB2 for z/OS Bufferpool Tuning win by Divide and Conquer or Lose by Multiply ...
DB2 for z/OS Bufferpool Tuning win by Divide and Conquer or Lose by Multiply ...
John Campbell
 
20618782218718364253 emea12 vldb
20618782218718364253 emea12 vldb20618782218718364253 emea12 vldb
20618782218718364253 emea12 vldb
Locuto Riorama
 
DB2 for z/OS Real Storage Monitoring, Control and Planning
DB2 for z/OS Real Storage Monitoring, Control and PlanningDB2 for z/OS Real Storage Monitoring, Control and Planning
DB2 for z/OS Real Storage Monitoring, Control and Planning
John Campbell
 
Db2 10 memory management uk db2 user group june 2013
Db2 10 memory management   uk db2 user group june 2013Db2 10 memory management   uk db2 user group june 2013
Db2 10 memory management uk db2 user group june 2013
Carol Davis-Mann
 
IBM Analytics Accelerator Trends & Directions Namk Hrle
IBM Analytics Accelerator  Trends & Directions Namk Hrle IBM Analytics Accelerator  Trends & Directions Namk Hrle
IBM Analytics Accelerator Trends & Directions Namk Hrle
Surekha Parekh
 
IBM DB2 Analytics Accelerator Trends & Directions by Namik Hrle
IBM DB2 Analytics Accelerator  Trends & Directions by Namik Hrle IBM DB2 Analytics Accelerator  Trends & Directions by Namik Hrle
IBM DB2 Analytics Accelerator Trends & Directions by Namik Hrle
Surekha Parekh
 
Db2 10 memory management uk db2 user group june 2013 [read-only]
Db2 10 memory management   uk db2 user group june 2013 [read-only]Db2 10 memory management   uk db2 user group june 2013 [read-only]
Db2 10 memory management uk db2 user group june 2013 [read-only]
Laura Hood
 
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
avanttic Consultoría Tecnológica
 
Upcoming changes in MySQL 5.7
Upcoming changes in MySQL 5.7Upcoming changes in MySQL 5.7
Upcoming changes in MySQL 5.7
Morgan Tocker
 
IBM WebSphere MQ for z/OS V8 - Latest Features Deep Dive
IBM WebSphere MQ for z/OS V8 - Latest Features Deep DiveIBM WebSphere MQ for z/OS V8 - Latest Features Deep Dive
IBM WebSphere MQ for z/OS V8 - Latest Features Deep Dive
Damon Cross
 
MOUG17 Keynote: Oracle OpenWorld Major Announcements
MOUG17 Keynote: Oracle OpenWorld Major AnnouncementsMOUG17 Keynote: Oracle OpenWorld Major Announcements
MOUG17 Keynote: Oracle OpenWorld Major Announcements
Monica Li
 
002 Introducing Neo4j 5 for Administrators - NODES2022 AMERICAS Beginner 2 - ...
002 Introducing Neo4j 5 for Administrators - NODES2022 AMERICAS Beginner 2 - ...002 Introducing Neo4j 5 for Administrators - NODES2022 AMERICAS Beginner 2 - ...
002 Introducing Neo4j 5 for Administrators - NODES2022 AMERICAS Beginner 2 - ...
Neo4j
 

Similar to MySQL InnoDB Storage Engine: Deep Dive - Mydbops (20)

Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
Simplifying MySQL, Pre-FOSDEM MySQL Days, Brussels, January 30, 2020.
 
What to expect from MariaDB Platform X5, part 1
What to expect from MariaDB Platform X5, part 1What to expect from MariaDB Platform X5, part 1
What to expect from MariaDB Platform X5, part 1
 
Using Apache Hive with High Performance
Using Apache Hive with High PerformanceUsing Apache Hive with High Performance
Using Apache Hive with High Performance
 
SAP BO and Teradata best practices
SAP BO and Teradata best practicesSAP BO and Teradata best practices
SAP BO and Teradata best practices
 
Benchmarking for postgresql workloads in kubernetes
Benchmarking for postgresql workloads in kubernetesBenchmarking for postgresql workloads in kubernetes
Benchmarking for postgresql workloads in kubernetes
 
Advantages of migrating to db2 v11.1
Advantages of migrating to db2 v11.1Advantages of migrating to db2 v11.1
Advantages of migrating to db2 v11.1
 
11158682984719608417 emea11 fallback
11158682984719608417 emea11 fallback11158682984719608417 emea11 fallback
11158682984719608417 emea11 fallback
 
11158682984719608417 emea11 fallback
11158682984719608417 emea11 fallback11158682984719608417 emea11 fallback
11158682984719608417 emea11 fallback
 
DB2 for z/OS Bufferpool Tuning win by Divide and Conquer or Lose by Multiply ...
DB2 for z/OS Bufferpool Tuning win by Divide and Conquer or Lose by Multiply ...DB2 for z/OS Bufferpool Tuning win by Divide and Conquer or Lose by Multiply ...
DB2 for z/OS Bufferpool Tuning win by Divide and Conquer or Lose by Multiply ...
 
20618782218718364253 emea12 vldb
20618782218718364253 emea12 vldb20618782218718364253 emea12 vldb
20618782218718364253 emea12 vldb
 
DB2 for z/OS Real Storage Monitoring, Control and Planning
DB2 for z/OS Real Storage Monitoring, Control and PlanningDB2 for z/OS Real Storage Monitoring, Control and Planning
DB2 for z/OS Real Storage Monitoring, Control and Planning
 
Db2 10 memory management uk db2 user group june 2013
Db2 10 memory management   uk db2 user group june 2013Db2 10 memory management   uk db2 user group june 2013
Db2 10 memory management uk db2 user group june 2013
 
IBM Analytics Accelerator Trends & Directions Namk Hrle
IBM Analytics Accelerator  Trends & Directions Namk Hrle IBM Analytics Accelerator  Trends & Directions Namk Hrle
IBM Analytics Accelerator Trends & Directions Namk Hrle
 
IBM DB2 Analytics Accelerator Trends & Directions by Namik Hrle
IBM DB2 Analytics Accelerator  Trends & Directions by Namik Hrle IBM DB2 Analytics Accelerator  Trends & Directions by Namik Hrle
IBM DB2 Analytics Accelerator Trends & Directions by Namik Hrle
 
Db2 10 memory management uk db2 user group june 2013 [read-only]
Db2 10 memory management   uk db2 user group june 2013 [read-only]Db2 10 memory management   uk db2 user group june 2013 [read-only]
Db2 10 memory management uk db2 user group june 2013 [read-only]
 
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
 
Upcoming changes in MySQL 5.7
Upcoming changes in MySQL 5.7Upcoming changes in MySQL 5.7
Upcoming changes in MySQL 5.7
 
IBM WebSphere MQ for z/OS V8 - Latest Features Deep Dive
IBM WebSphere MQ for z/OS V8 - Latest Features Deep DiveIBM WebSphere MQ for z/OS V8 - Latest Features Deep Dive
IBM WebSphere MQ for z/OS V8 - Latest Features Deep Dive
 
MOUG17 Keynote: Oracle OpenWorld Major Announcements
MOUG17 Keynote: Oracle OpenWorld Major AnnouncementsMOUG17 Keynote: Oracle OpenWorld Major Announcements
MOUG17 Keynote: Oracle OpenWorld Major Announcements
 
002 Introducing Neo4j 5 for Administrators - NODES2022 AMERICAS Beginner 2 - ...
002 Introducing Neo4j 5 for Administrators - NODES2022 AMERICAS Beginner 2 - ...002 Introducing Neo4j 5 for Administrators - NODES2022 AMERICAS Beginner 2 - ...
002 Introducing Neo4j 5 for Administrators - NODES2022 AMERICAS Beginner 2 - ...
 

More from Mydbops

Read/Write Splitting using MySQL Router - Mydbops Meetup16
Read/Write Splitting using MySQL Router - Mydbops Meetup16Read/Write Splitting using MySQL Router - Mydbops Meetup16
Read/Write Splitting using MySQL Router - Mydbops Meetup16
Mydbops
 
TiDB - From Data to Discovery: Exploring the Intersection of Distributed Dat...
TiDB  - From Data to Discovery: Exploring the Intersection of Distributed Dat...TiDB  - From Data to Discovery: Exploring the Intersection of Distributed Dat...
TiDB - From Data to Discovery: Exploring the Intersection of Distributed Dat...
Mydbops
 
Demystifying Real time Analytics with TiDB
Demystifying Real time Analytics with TiDBDemystifying Real time Analytics with TiDB
Demystifying Real time Analytics with TiDB
Mydbops
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
Efficient MySQL Indexing and what's new in MySQL Explain
Efficient MySQL Indexing and what's new in MySQL ExplainEfficient MySQL Indexing and what's new in MySQL Explain
Efficient MySQL Indexing and what's new in MySQL Explain
Mydbops
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
Mydbops
 
PostgreSQL Schema Changes with pg-osc - Mydbops @ PGConf India 2024
PostgreSQL Schema Changes with pg-osc - Mydbops @ PGConf India 2024PostgreSQL Schema Changes with pg-osc - Mydbops @ PGConf India 2024
PostgreSQL Schema Changes with pg-osc - Mydbops @ PGConf India 2024
Mydbops
 
Choosing the Right Database: Exploring MySQL Alternatives for Modern Applicat...
Choosing the Right Database: Exploring MySQL Alternatives for Modern Applicat...Choosing the Right Database: Exploring MySQL Alternatives for Modern Applicat...
Choosing the Right Database: Exploring MySQL Alternatives for Modern Applicat...
Mydbops
 
Mastering Aurora PostgreSQL Clusters for Disaster Recovery
Mastering Aurora PostgreSQL Clusters for Disaster RecoveryMastering Aurora PostgreSQL Clusters for Disaster Recovery
Mastering Aurora PostgreSQL Clusters for Disaster Recovery
Mydbops
 
Navigating Transactions: ACID Complexity in Modern Databases- Mydbops Open So...
Navigating Transactions: ACID Complexity in Modern Databases- Mydbops Open So...Navigating Transactions: ACID Complexity in Modern Databases- Mydbops Open So...
Navigating Transactions: ACID Complexity in Modern Databases- Mydbops Open So...
Mydbops
 
AWS RDS in MySQL 2023 Vinoth Kanna @ Mydbops OpenSource Database Meetup 15
AWS RDS in MySQL 2023 Vinoth Kanna @ Mydbops OpenSource Database Meetup 15AWS RDS in MySQL 2023 Vinoth Kanna @ Mydbops OpenSource Database Meetup 15
AWS RDS in MySQL 2023 Vinoth Kanna @ Mydbops OpenSource Database Meetup 15
Mydbops
 
Data-at-scale-with-TIDB Mydbops Co-Founder Kabilesh PR at LSPE Event
Data-at-scale-with-TIDB Mydbops Co-Founder Kabilesh PR at LSPE EventData-at-scale-with-TIDB Mydbops Co-Founder Kabilesh PR at LSPE Event
Data-at-scale-with-TIDB Mydbops Co-Founder Kabilesh PR at LSPE Event
Mydbops
 
MySQL Transformation Case Study: 80% Cost Savings & Uninterrupted Availabilit...
MySQL Transformation Case Study: 80% Cost Savings & Uninterrupted Availabilit...MySQL Transformation Case Study: 80% Cost Savings & Uninterrupted Availabilit...
MySQL Transformation Case Study: 80% Cost Savings & Uninterrupted Availabilit...
Mydbops
 
Scaling-MongoDB-with-Horizontal-and-Vertical-Sharding Mydbops Opensource Data...
Scaling-MongoDB-with-Horizontal-and-Vertical-Sharding Mydbops Opensource Data...Scaling-MongoDB-with-Horizontal-and-Vertical-Sharding Mydbops Opensource Data...
Scaling-MongoDB-with-Horizontal-and-Vertical-Sharding Mydbops Opensource Data...
Mydbops
 
Mastering MongoDB Atlas: Essentials of Diagnostics and Debugging in the Cloud...
Mastering MongoDB Atlas: Essentials of Diagnostics and Debugging in the Cloud...Mastering MongoDB Atlas: Essentials of Diagnostics and Debugging in the Cloud...
Mastering MongoDB Atlas: Essentials of Diagnostics and Debugging in the Cloud...
Mydbops
 
Data Organisation: Table Partitioning in PostgreSQL
Data Organisation: Table Partitioning in PostgreSQLData Organisation: Table Partitioning in PostgreSQL
Data Organisation: Table Partitioning in PostgreSQL
Mydbops
 
Navigating MongoDB's Queryable Encryption for Ultimate Security - Mydbops
Navigating MongoDB's Queryable Encryption for Ultimate Security - MydbopsNavigating MongoDB's Queryable Encryption for Ultimate Security - Mydbops
Navigating MongoDB's Queryable Encryption for Ultimate Security - Mydbops
Mydbops
 
Data High Availability With TIDB
Data High Availability With TIDBData High Availability With TIDB
Data High Availability With TIDB
Mydbops
 
Mastering Database Migration_ Native replication (8.0) to InnoDB Cluster (8.0...
Mastering Database Migration_ Native replication (8.0) to InnoDB Cluster (8.0...Mastering Database Migration_ Native replication (8.0) to InnoDB Cluster (8.0...
Mastering Database Migration_ Native replication (8.0) to InnoDB Cluster (8.0...
Mydbops
 
Enhancing Security of MySQL Connections using SSL certificates
Enhancing Security of MySQL Connections using SSL certificatesEnhancing Security of MySQL Connections using SSL certificates
Enhancing Security of MySQL Connections using SSL certificates
Mydbops
 

More from Mydbops (20)

Read/Write Splitting using MySQL Router - Mydbops Meetup16
Read/Write Splitting using MySQL Router - Mydbops Meetup16Read/Write Splitting using MySQL Router - Mydbops Meetup16
Read/Write Splitting using MySQL Router - Mydbops Meetup16
 
TiDB - From Data to Discovery: Exploring the Intersection of Distributed Dat...
TiDB  - From Data to Discovery: Exploring the Intersection of Distributed Dat...TiDB  - From Data to Discovery: Exploring the Intersection of Distributed Dat...
TiDB - From Data to Discovery: Exploring the Intersection of Distributed Dat...
 
Demystifying Real time Analytics with TiDB
Demystifying Real time Analytics with TiDBDemystifying Real time Analytics with TiDB
Demystifying Real time Analytics with TiDB
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
Efficient MySQL Indexing and what's new in MySQL Explain
Efficient MySQL Indexing and what's new in MySQL ExplainEfficient MySQL Indexing and what's new in MySQL Explain
Efficient MySQL Indexing and what's new in MySQL Explain
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
PostgreSQL Schema Changes with pg-osc - Mydbops @ PGConf India 2024
PostgreSQL Schema Changes with pg-osc - Mydbops @ PGConf India 2024PostgreSQL Schema Changes with pg-osc - Mydbops @ PGConf India 2024
PostgreSQL Schema Changes with pg-osc - Mydbops @ PGConf India 2024
 
Choosing the Right Database: Exploring MySQL Alternatives for Modern Applicat...
Choosing the Right Database: Exploring MySQL Alternatives for Modern Applicat...Choosing the Right Database: Exploring MySQL Alternatives for Modern Applicat...
Choosing the Right Database: Exploring MySQL Alternatives for Modern Applicat...
 
Mastering Aurora PostgreSQL Clusters for Disaster Recovery
Mastering Aurora PostgreSQL Clusters for Disaster RecoveryMastering Aurora PostgreSQL Clusters for Disaster Recovery
Mastering Aurora PostgreSQL Clusters for Disaster Recovery
 
Navigating Transactions: ACID Complexity in Modern Databases- Mydbops Open So...
Navigating Transactions: ACID Complexity in Modern Databases- Mydbops Open So...Navigating Transactions: ACID Complexity in Modern Databases- Mydbops Open So...
Navigating Transactions: ACID Complexity in Modern Databases- Mydbops Open So...
 
AWS RDS in MySQL 2023 Vinoth Kanna @ Mydbops OpenSource Database Meetup 15
AWS RDS in MySQL 2023 Vinoth Kanna @ Mydbops OpenSource Database Meetup 15AWS RDS in MySQL 2023 Vinoth Kanna @ Mydbops OpenSource Database Meetup 15
AWS RDS in MySQL 2023 Vinoth Kanna @ Mydbops OpenSource Database Meetup 15
 
Data-at-scale-with-TIDB Mydbops Co-Founder Kabilesh PR at LSPE Event
Data-at-scale-with-TIDB Mydbops Co-Founder Kabilesh PR at LSPE EventData-at-scale-with-TIDB Mydbops Co-Founder Kabilesh PR at LSPE Event
Data-at-scale-with-TIDB Mydbops Co-Founder Kabilesh PR at LSPE Event
 
MySQL Transformation Case Study: 80% Cost Savings & Uninterrupted Availabilit...
MySQL Transformation Case Study: 80% Cost Savings & Uninterrupted Availabilit...MySQL Transformation Case Study: 80% Cost Savings & Uninterrupted Availabilit...
MySQL Transformation Case Study: 80% Cost Savings & Uninterrupted Availabilit...
 
Scaling-MongoDB-with-Horizontal-and-Vertical-Sharding Mydbops Opensource Data...
Scaling-MongoDB-with-Horizontal-and-Vertical-Sharding Mydbops Opensource Data...Scaling-MongoDB-with-Horizontal-and-Vertical-Sharding Mydbops Opensource Data...
Scaling-MongoDB-with-Horizontal-and-Vertical-Sharding Mydbops Opensource Data...
 
Mastering MongoDB Atlas: Essentials of Diagnostics and Debugging in the Cloud...
Mastering MongoDB Atlas: Essentials of Diagnostics and Debugging in the Cloud...Mastering MongoDB Atlas: Essentials of Diagnostics and Debugging in the Cloud...
Mastering MongoDB Atlas: Essentials of Diagnostics and Debugging in the Cloud...
 
Data Organisation: Table Partitioning in PostgreSQL
Data Organisation: Table Partitioning in PostgreSQLData Organisation: Table Partitioning in PostgreSQL
Data Organisation: Table Partitioning in PostgreSQL
 
Navigating MongoDB's Queryable Encryption for Ultimate Security - Mydbops
Navigating MongoDB's Queryable Encryption for Ultimate Security - MydbopsNavigating MongoDB's Queryable Encryption for Ultimate Security - Mydbops
Navigating MongoDB's Queryable Encryption for Ultimate Security - Mydbops
 
Data High Availability With TIDB
Data High Availability With TIDBData High Availability With TIDB
Data High Availability With TIDB
 
Mastering Database Migration_ Native replication (8.0) to InnoDB Cluster (8.0...
Mastering Database Migration_ Native replication (8.0) to InnoDB Cluster (8.0...Mastering Database Migration_ Native replication (8.0) to InnoDB Cluster (8.0...
Mastering Database Migration_ Native replication (8.0) to InnoDB Cluster (8.0...
 
Enhancing Security of MySQL Connections using SSL certificates
Enhancing Security of MySQL Connections using SSL certificatesEnhancing Security of MySQL Connections using SSL certificates
Enhancing Security of MySQL Connections using SSL certificates
 

Recently uploaded

Cassandra to ScyllaDB: Technical Comparison and the Path to Success
Cassandra to ScyllaDB: Technical Comparison and the Path to SuccessCassandra to ScyllaDB: Technical Comparison and the Path to Success
Cassandra to ScyllaDB: Technical Comparison and the Path to Success
ScyllaDB
 
ASIMOV: Enterprise RAG at Dialog Axiata PLC
ASIMOV: Enterprise RAG at Dialog Axiata PLCASIMOV: Enterprise RAG at Dialog Axiata PLC
ASIMOV: Enterprise RAG at Dialog Axiata PLC
Zilliz
 
Chapter 1 - Fundamentals of Testing V4.0
Chapter 1 - Fundamentals of Testing V4.0Chapter 1 - Fundamentals of Testing V4.0
Chapter 1 - Fundamentals of Testing V4.0
Neeraj Kumar Singh
 
Move Auth, Policy, and Resilience to the Platform
Move Auth, Policy, and Resilience to the PlatformMove Auth, Policy, and Resilience to the Platform
Move Auth, Policy, and Resilience to the Platform
Christian Posta
 
Chapter 5 - Managing Test Activities V4.0
Chapter 5 - Managing Test Activities V4.0Chapter 5 - Managing Test Activities V4.0
Chapter 5 - Managing Test Activities V4.0
Neeraj Kumar Singh
 
Getting Started Using the National Research Platform
Getting Started Using the National Research PlatformGetting Started Using the National Research Platform
Getting Started Using the National Research Platform
Larry Smarr
 
Corporate Open Source Anti-Patterns: A Decade Later
Corporate Open Source Anti-Patterns: A Decade LaterCorporate Open Source Anti-Patterns: A Decade Later
Corporate Open Source Anti-Patterns: A Decade Later
ScyllaDB
 
Guidelines for Effective Data Visualization
Guidelines for Effective Data VisualizationGuidelines for Effective Data Visualization
Guidelines for Effective Data Visualization
UmmeSalmaM1
 
STKI Israeli Market Study 2024 final v1
STKI Israeli Market Study 2024 final  v1STKI Israeli Market Study 2024 final  v1
STKI Israeli Market Study 2024 final v1
Dr. Jimmy Schwarzkopf
 
“Efficiency Unleashed: The Next-gen NXP i.MX 95 Applications Processor for Em...
“Efficiency Unleashed: The Next-gen NXP i.MX 95 Applications Processor for Em...“Efficiency Unleashed: The Next-gen NXP i.MX 95 Applications Processor for Em...
“Efficiency Unleashed: The Next-gen NXP i.MX 95 Applications Processor for Em...
Edge AI and Vision Alliance
 
Database Management Myths for Developers
Database Management Myths for DevelopersDatabase Management Myths for Developers
Database Management Myths for Developers
John Sterrett
 
Introduction to ThousandEyes AMER Webinar
Introduction  to ThousandEyes AMER WebinarIntroduction  to ThousandEyes AMER Webinar
Introduction to ThousandEyes AMER Webinar
ThousandEyes
 
Brightwell ILC Futures workshop David Sinclair presentation
Brightwell ILC Futures workshop David Sinclair presentationBrightwell ILC Futures workshop David Sinclair presentation
Brightwell ILC Futures workshop David Sinclair presentation
ILC- UK
 
APJC Introduction to ThousandEyes Webinar
APJC Introduction to ThousandEyes WebinarAPJC Introduction to ThousandEyes Webinar
APJC Introduction to ThousandEyes Webinar
ThousandEyes
 
Chapter 3 - Static Testing (Review) V4.0
Chapter 3 - Static Testing (Review) V4.0Chapter 3 - Static Testing (Review) V4.0
Chapter 3 - Static Testing (Review) V4.0
Neeraj Kumar Singh
 
Building a Semantic Layer of your Data Platform
Building a Semantic Layer of your Data PlatformBuilding a Semantic Layer of your Data Platform
Building a Semantic Layer of your Data Platform
Enterprise Knowledge
 
Leading a Tableau User Group - Onboarding deck for new leaders
Leading a Tableau User Group - Onboarding deck for new leadersLeading a Tableau User Group - Onboarding deck for new leaders
Leading a Tableau User Group - Onboarding deck for new leaders
lward7
 
Call Girls Bangalore ☎️ +91-7426014248 😍 Bangalore Call Girl Beauty Girls Ban...
Call Girls Bangalore ☎️ +91-7426014248 😍 Bangalore Call Girl Beauty Girls Ban...Call Girls Bangalore ☎️ +91-7426014248 😍 Bangalore Call Girl Beauty Girls Ban...
Call Girls Bangalore ☎️ +91-7426014248 😍 Bangalore Call Girl Beauty Girls Ban...
anilsa9823
 
Churchgate Call Girls 👑VIP — Mumbai ☎️ 9910780858 🎀Niamh@ Churchgate Call Gi...
Churchgate Call Girls  👑VIP — Mumbai ☎️ 9910780858 🎀Niamh@ Churchgate Call Gi...Churchgate Call Girls  👑VIP — Mumbai ☎️ 9910780858 🎀Niamh@ Churchgate Call Gi...
Churchgate Call Girls 👑VIP — Mumbai ☎️ 9910780858 🎀Niamh@ Churchgate Call Gi...
shardda patel
 
The "Zen" of Python Exemplars - OTel Community Day
The "Zen" of Python Exemplars - OTel Community DayThe "Zen" of Python Exemplars - OTel Community Day
The "Zen" of Python Exemplars - OTel Community Day
Paige Cruz
 

Recently uploaded (20)

Cassandra to ScyllaDB: Technical Comparison and the Path to Success
Cassandra to ScyllaDB: Technical Comparison and the Path to SuccessCassandra to ScyllaDB: Technical Comparison and the Path to Success
Cassandra to ScyllaDB: Technical Comparison and the Path to Success
 
ASIMOV: Enterprise RAG at Dialog Axiata PLC
ASIMOV: Enterprise RAG at Dialog Axiata PLCASIMOV: Enterprise RAG at Dialog Axiata PLC
ASIMOV: Enterprise RAG at Dialog Axiata PLC
 
Chapter 1 - Fundamentals of Testing V4.0
Chapter 1 - Fundamentals of Testing V4.0Chapter 1 - Fundamentals of Testing V4.0
Chapter 1 - Fundamentals of Testing V4.0
 
Move Auth, Policy, and Resilience to the Platform
Move Auth, Policy, and Resilience to the PlatformMove Auth, Policy, and Resilience to the Platform
Move Auth, Policy, and Resilience to the Platform
 
Chapter 5 - Managing Test Activities V4.0
Chapter 5 - Managing Test Activities V4.0Chapter 5 - Managing Test Activities V4.0
Chapter 5 - Managing Test Activities V4.0
 
Getting Started Using the National Research Platform
Getting Started Using the National Research PlatformGetting Started Using the National Research Platform
Getting Started Using the National Research Platform
 
Corporate Open Source Anti-Patterns: A Decade Later
Corporate Open Source Anti-Patterns: A Decade LaterCorporate Open Source Anti-Patterns: A Decade Later
Corporate Open Source Anti-Patterns: A Decade Later
 
Guidelines for Effective Data Visualization
Guidelines for Effective Data VisualizationGuidelines for Effective Data Visualization
Guidelines for Effective Data Visualization
 
STKI Israeli Market Study 2024 final v1
STKI Israeli Market Study 2024 final  v1STKI Israeli Market Study 2024 final  v1
STKI Israeli Market Study 2024 final v1
 
“Efficiency Unleashed: The Next-gen NXP i.MX 95 Applications Processor for Em...
“Efficiency Unleashed: The Next-gen NXP i.MX 95 Applications Processor for Em...“Efficiency Unleashed: The Next-gen NXP i.MX 95 Applications Processor for Em...
“Efficiency Unleashed: The Next-gen NXP i.MX 95 Applications Processor for Em...
 
Database Management Myths for Developers
Database Management Myths for DevelopersDatabase Management Myths for Developers
Database Management Myths for Developers
 
Introduction to ThousandEyes AMER Webinar
Introduction  to ThousandEyes AMER WebinarIntroduction  to ThousandEyes AMER Webinar
Introduction to ThousandEyes AMER Webinar
 
Brightwell ILC Futures workshop David Sinclair presentation
Brightwell ILC Futures workshop David Sinclair presentationBrightwell ILC Futures workshop David Sinclair presentation
Brightwell ILC Futures workshop David Sinclair presentation
 
APJC Introduction to ThousandEyes Webinar
APJC Introduction to ThousandEyes WebinarAPJC Introduction to ThousandEyes Webinar
APJC Introduction to ThousandEyes Webinar
 
Chapter 3 - Static Testing (Review) V4.0
Chapter 3 - Static Testing (Review) V4.0Chapter 3 - Static Testing (Review) V4.0
Chapter 3 - Static Testing (Review) V4.0
 
Building a Semantic Layer of your Data Platform
Building a Semantic Layer of your Data PlatformBuilding a Semantic Layer of your Data Platform
Building a Semantic Layer of your Data Platform
 
Leading a Tableau User Group - Onboarding deck for new leaders
Leading a Tableau User Group - Onboarding deck for new leadersLeading a Tableau User Group - Onboarding deck for new leaders
Leading a Tableau User Group - Onboarding deck for new leaders
 
Call Girls Bangalore ☎️ +91-7426014248 😍 Bangalore Call Girl Beauty Girls Ban...
Call Girls Bangalore ☎️ +91-7426014248 😍 Bangalore Call Girl Beauty Girls Ban...Call Girls Bangalore ☎️ +91-7426014248 😍 Bangalore Call Girl Beauty Girls Ban...
Call Girls Bangalore ☎️ +91-7426014248 😍 Bangalore Call Girl Beauty Girls Ban...
 
Churchgate Call Girls 👑VIP — Mumbai ☎️ 9910780858 🎀Niamh@ Churchgate Call Gi...
Churchgate Call Girls  👑VIP — Mumbai ☎️ 9910780858 🎀Niamh@ Churchgate Call Gi...Churchgate Call Girls  👑VIP — Mumbai ☎️ 9910780858 🎀Niamh@ Churchgate Call Gi...
Churchgate Call Girls 👑VIP — Mumbai ☎️ 9910780858 🎀Niamh@ Churchgate Call Gi...
 
The "Zen" of Python Exemplars - OTel Community Day
The "Zen" of Python Exemplars - OTel Community DayThe "Zen" of Python Exemplars - OTel Community Day
The "Zen" of Python Exemplars - OTel Community Day
 

MySQL InnoDB Storage Engine: Deep Dive - Mydbops

  • 1. Copyright © 2023, Oracle and/or its affiliates | Confidential: Internal/Restricted/Highly Restricted MySQL - InnoDB MyDBOps June 08, 2024 1
  • 2. About me 2 Copyright © 2024, Oracle and/or its affiliates ● Mayank Prasad ● M.Tech in Information Technology (IIIT Bangalore) ● Part of MySQL Server Development since 2011 ● Part of MySQL-InnoDB Storage Engine Development team since 2017
  • 3. Safe Harbor Statement 3 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. Copyright © 2024, Oracle and/or its affiliates
  • 4. 4 ➡Configurable REDO logs ➡INSTANT ADD/DROP COLUMN ➡Q&A Agenda Copyright © 2024, Oracle and/or its affiliates
  • 5. 5 ➡Configurable REDO logs ➡INSTANT ADD/DROP COLUMN ➡Q&A Agenda Copyright © 2024, Oracle and/or its affiliates
  • 6. ● REDO Logs are WAL for InnoDB ● To avoid flushing dirty pages (16K) to disk every time they change. ● An on disk circular buffer ● Snake Metaphor : A snake eating it’s own tail. Dynamic Configuration of REDOs 6 Introduction Copyright © 2024, Oracle and/or its affiliates head head head File 1 Log file size
  • 7. 7 Dynamic Configuration of REDOs Introduction ● Longer REDOs => Less page flushes but Longer recovery. Slower slow shutdown. ● Shorter REDOs => More page flushes but shorter recovery. Performance impact. ● Trial and error to see what suits according to Workload ● Can specify size of REDO Log file (innodb_log_file_size) ● But REDO file size Can’t be changed at run time. A server restart is needed ● There were requests to make it dynamic. Copyright © 2024, Oracle and/or its affiliates
  • 8. ● Still an on disk circular buffer but spanned across multiple files ● Instead of file size, we talk in terms of capacity (innodb_redo_log_capacity) in bytes. ● Can be changed at runtime i.e. no server restart. ● Number of files and their size is calculated automatically Dynamic Configuration of REDOs 8 Solution Copyright © 2024, Oracle and/or its affiliates head head head File 2 File N File 1 File … REDO log capacity
  • 9. • A new dedicated folder: #innodb_redo in MySQL’s datadir • InnoDB creates 32 redo log fi les • If more space is needed, space can be reclaimed by deleting old “not needed” fi les and create new to be reused for new REDOs. • Not needed : Files containing REDOs which are behind checkpoint LSN. Dynamic Configuration of REDOs 9 Copyright © 2024, Oracle and/or its affiliates Solution contd
  • 10. 10 • checkpoint_lsn (Innodb_redo_log_checkpoint_lsn) : • an LSN point up to which all changes to the pages are guaranteed to have already been written and fsynced back to tablespace fi les – basically, the still needed portion of redo log starts here. • current_lsn (Innodb_redo_log_current_lsn) : • the last written position in the redo log. That write could still be buffered inside MySQL processes buffer. • fl ushed_to_disk_lsn (Innodb_redo_log_flushed_to_disk_lsn) : • the last position in the redo log that InnoDB has been fl ushed to disk. Dynamic Configuration of REDOs Solution contd Copyright © 2024, Oracle and/or its affiliates
  • 11. 11 Dynamic Configuration of REDOs Solution contd • When needed, the log files governor will perform some cleanup and some active files that are not needed anymore will become the new spare ones • When the background thread is not able to remove a log fi le from the left to put it to the right, the user transaction will get stuck waiting for REDO buffers to be written to disk. DBAs get warning in the error log notifying them to increase the InnoDB Redo Log Capacity [Warning] [MY-013865] [InnoDB] Redo log writer is waiting for a new redo log file. Consider increasing innodb_redo_log_capacity. Copyright © 2024, Oracle and/or its affiliates
  • 12. Observability 12 • The new Redo Log is instrumented in performance_schema in the table innodb_redo_log_files • This means there are 5 active redo log fi les and 27 (32-5) spare ones (_tmp): Dynamic Configuration of REDOs Copyright © 2024, Oracle and/or its affiliates
  • 13. 13 ● Resizing • Eg : make capacity to 200MB SET GLOBAL innodb_redo_log_capacity =200*1024*1024; • Resizing Up • Instant • Resizing Down • Need to wait for existing REDOs to get truncated. • Happens in background • Resizing status mysql> SHOW STATUS LIKE 'Innodb_redo_log_resize_status'; +-------------------------------+------------------+ | Variable_name | Value | +-------------------------------+------------------+ | Innodb_redo_log_resize_status | Resizing down | +-------------------------------+------------------+ mysql> SHOW STATUS LIKE 'Innodb_redo_log_resize_status'; +-------------------------------+-------+ | Variable_name | Value | +-------------------------------+-------+ | Innodb_redo_log_resize_status | OK | +-------------------------------+-------+ • Current REDO log capacity mysql> SHOW STATUS LIKE 'Innodb_redo_log_capacity_resized'; +----------------------------------+-----------+ | Variable_name | Value | +----------------------------------+-----------+ | Innodb_redo_log_capacity_resized | 104857600 | +----------------------------------+-----------+ Dynamic Configuration of REDOs Observability contd Copyright © 2024, Oracle and/or its affiliates
  • 14. 14 ➡Configurable REDO logs ➡INSTANT ADD/DROP COLUMNS ➡Q&A Agenda Copyright © 2024, Oracle and/or its affiliates
  • 15. ● InnoDB on disk Row Format INSTANT ADD/DROP Column 15 Introduction Row Metadata Row Data • Null bitmap • Length of var length fields • Etc. Copyright © 2024, Oracle and/or its affiliates
  • 16. 16 Row Metadata Row Data Fixed size row Header Variable size row Header 6 bytes (REDUNDANT) 5 bytes (COMPACT/DYNAMIC/COMPRESSED) Null bitmap* 0 0 0 1 0 1 1 0 0 … Var length fields lengths L1 L2 L3 Ln … INSTANT ADD/DROP Column InnoDB Row Header *null bitmap is not present in REDUNDANT row format Copyright © 2024, Oracle and/or its affiliates
  • 17. 17 ● Each record header keeps columns specific info. ● Add/Drop column would need each row header to be modified. ● Causes table rebuild ● Bigger the table, more the time it take. ● Costly - time, disk, resource, schedule ● Table lock ● Replication - Master does it. Then slave does the same. ● Big requirement from users/customers INSTANT ADD/DROP Column InnoDB Row Format Impact Copyright © 2024, Oracle and/or its affiliates
  • 18. ● Only metadata change. ● No table rebuild. ● No table lock required for long duration ● Saves time/space/resources ● Replication would benefit. INSTANT ADD/DROP Column 18 Idea behind solution Copyright © 2024, Oracle and/or its affiliates
  • 19. ● MySQL 8.0.12 ● ALTER TABLE t1 ADD COLUMN … ALGORITHM=INSTANT; ● Limitations ● Only ADD COLUMN support ● Column can be added only at the end. AFTER/FIRST clause throws error. ● New design ● Can add column at any place. ● Design work for DROP column as well. So column can be dropped from any place. ● ALTER TABLE t1 ADD COLUMN [AFTER/FIRST] … ALGORITHM=INSTANT; ● ALTER TABLE t1 DROP COLUMN … ALGORITHM=INSTANT; INSTANT ADD/DROP Column 19 Earlier attempt and new design Copyright © 2024, Oracle and/or its affiliates
  • 20. 20 INSTANT ADD/DROP Column Solution : New design, Row versions ● Introduced “Row versioning” ● Every time a new INSTANT ADD/DROP Done, bump the versions ● Keep information of columns in the version they are ADDed or DROPped. ● Stamp this version on the row when it is inserted/updated. ● When fetched, rows are transformed (if needed) to current row version. Copyright © 2024, Oracle and/or its affiliates
  • 21. 21 Next Row Offset Num Columns HEAP Number 1|2 bytes offset? NUM owned INFO BITS 1 bit 16 bits 10 bits 13 bits 4 bits 4 bits 6 bytes header (REDUNDANT) Free bit 6 bytes header Version 8 bits 1 … Preceding version byte is present INSTANT ADD/DROP Column Solution : On disk row format change Copyright © 2024, Oracle and/or its affiliates
  • 22. 22 Next Row Offset HEAP Number Status NUM owned INFO BITS 3 bits 16 bits 13 bits 4 bits 4 bits 5 bytes header (COMPACT/DYNAMIC/COMPRESSED) Free bit 5 bytes header Version 8 bits 1 … Preceding version byte is present INSTANT ADD/DROP Column Solution : On disk row format change contd. Copyright © 2024, Oracle and/or its affiliates
  • 23. 23 Fixed size row Header Variable size row Header Row Data INSTANT ADD/DROP Column Solution : On disk row format change contd. ● A row with no row version. ● Bit in INFO BITS is 0. ● No version on row on disk 0 ● A row with no row version. ● Bit in INFO BITS is 1. ● Version is stamped on row on disk Copyright © 2024, Oracle and/or its affiliates Row Metadata Fixed size row Header Variable size row Header Row Data Row Metadata Version 1
  • 24. 24 INSTANT ADD/DROP Column Solution : Transforming rows while fetch New info on rows on disk • rec_version New column metadata • version_added : The row version in which the column I added (0 if it was present during CREATE) • version_dropped : The row version in which the column is dropped (0 if it is present currently) When a record is read, with above informations, it is easy to determine which columns are present in the record. And while fetching : • Ignore all the columns value with version_dropped > 0 • Use default value for columns with version_added > rec_version Copyright © 2024, Oracle and/or its affiliates
  • 25. 25 SQL C1 C2 C3 C4 C5 Version CREATE TABLE Y Y Y Y - 0 ALTER TABLE … DROP C3 Y Y D Y - 1 ALTER TABLE … ADD C5 … DEFAULT C5Default Y Y - Y A 2 Column version_added version_dropped Default value C1 0 0 C2 0 0 C3 0 1 C4 0 0 C5 2 0 C5Default On disk R1 in V0 Vc1 Vc2 Vc3 Vc4 Row fetched Vc1 Vc2 Vc4 Vc5 INSTANT ADD/DROP Column Solution : Transforming rows while fetch • (nothing stamped) rec_version 0 • Current version is 2. • C3 was present on disk and to be ignored • C5 wasn’t present so need to populate default value Insert Copyright © 2024, Oracle and/or its affiliates
  • 26. INSTANT ADD/DROP Column 26 Solution : Flow explanation No changes to rows on table! Metadata (eg: Default values) Copyright © 2024, Oracle and/or its affiliates DML INSERT DML UPDATE DDL ALTER TABLE … ADD/DROP COLUMN… ,ALGORITHM=INSTANT; TABLE R2’ : Row with no version R3 : Row with no version R4 : Row with version 1 R3’ : Row with version 1 Data Dictionary Core DD tables System tables R1 : Row with no version ——————————— Fetch R1 R2’ R3’ R4 R2 : Row with no version ——————————— Row data Metadata R1 and R2’ transformed
  • 27. 27 INSTANT ADD/DROP Column Default ALGORITHM ● For ALTER TABLE … ADD/DROP COLUMN … ● ALGORITHM=INSTANT is default. I.e. if not specified explicitly we try to use INSTANT algorithm. ● If INSTANT is not possible, it falls back to ALGORITHM=INPLACE/COPY. ● Once OPTIMIZE TABLE and other ALTER TABLE DDLs, which cause tables to rebuild, are executed, INSTANT metadata is reset. ● Column metadata is reset in DD ● row_version is reset to 0. ● TRUNCATE TABLE resets the INSTANT metadata (no row on disk to interpret). Copyright © 2024, Oracle and/or its affiliates
  • 28. 28 INSTANT ADD/DROP Column ROW version limit ● Not frequent operations. ● Maximum row versions allowed are 64. ● After that ALGORITHM=INSTANT throws with following error ERROR 4080 (HY000): Maximum row versions reached for table test/t1. No more columns can be added or dropped instantly. Please use COPY/INPLACE. ● If ALGORITHM=INSTANT is not specified, it falls back to ALGORITHM=COPY automatically. ● As it rebuilds the table, INSTANT Metadata from each row is reset ● Column metadata is reset in DD ● row_version is reset to 0. Copyright © 2024, Oracle and/or its affiliates
  • 29. 29 INSTANT ADD/DROP Column Compatibility : Upgrade ● Earlier ADD COLUMN has different row format. ● No need to transform any rows on disk during upgrade. ● After upgrade we might have table which has ● Rows INSERTED before earlier INSTANT ADD was done ● Rows INSERTED after earlier INSTANT ADD was done ● Rows INSERTED before new INSTANT ADD/DROP was done ● Rows INSERTED after new INSTANT ADD/DROP was done ● These rows are transformed correctly when fetched and. ● Once table is rebuilt (OPTIMIZE TABLE, ALTER etc.) Instant metadata is cleared. Copyright © 2024, Oracle and/or its affiliates
  • 30. 30 INSTANT ADD/DROP Column Compatibility : IMPORT/EXPORT ● EXPORT ● We write INSTANT metadata in the cfg file. ● IMPORT ● cfg file is must ● allowed even if target table has only the columns which exists (eg: CREATE TABLE LIKE) ● INSTANT metadata is populated from CFG file. Rows are interpreted correctly. SOURCE (INSTANT ADD/DROP) DESTINATION (INSTANT ADD/DROP) ALLOWED REMARK NO NO YES - YES NO YES - NO YES NO - YES YES YES/NO Allowed iff INSTANT metadata matches Copyright © 2024, Oracle and/or its affiliates
  • 31. 31 INSTANT ADD/DROP Column Observability mysql> CREATE TABLE t1 (c1 INT); Query OK, 0 rows affected (0.03 sec) mysql> SELECT N_COLS, INSTANT_COLS, TOTAL_ROW_VERSIONS FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE NAME LIKE "%t1%"; +--------+--------------+--------------------+ | N_COLS | INSTANT_COLS | TOTAL_ROW_VERSIONS | +--------+--------------+--------------------+ | 4 | 0 | 0 | +--------+--------------+--------------------+ 1 row in set (0.02 sec) mysql> SELECT HAS_DEFAULT, DEFAULT_VALUE FROM INFORMATION_SCHEMA.INNODB_COLUMNS WHERE NAME LIKE "%c1%"; +-------------+------------------------------+ | HAS_DEFAULT | DEFAULT_VALUE | +-------------+------------------------------+ | 0 | NULL | +-------------+------------------------------+ 1 row in set (0.03 sec) mysql> ALTER TABLE t1 ADD COLUMN c2 INT DEFAULT 100 FIRST, ALGORITHM=INSTANT; Query OK, 0 rows affected (0.05 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> SELECT N_COLS, INSTANT_COLS, TOTAL_ROW_VERSIONS FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE NAME LIKE "%t1%"; +--------+--------------+--------------------+ | N_COLS | INSTANT_COLS | TOTAL_ROW_VERSIONS | +--------+--------------+--------------------+ | 5 | 0 | 1 | +--------+--------------+--------------------+ 1 row in set (0.02 sec) mysql> SELECT HAS_DEFAULT, DEFAULT_VALUE FROM INFORMATION_SCHEMA.INNODB_COLUMNS WHERE NAME LIKE "%c2%"; +-------------+------------------------------+ | HAS_DEFAULT | DEFAULT_VALUE | +-------------+------------------------------+ | 1 | 0x3830303030303634 | +-------------+------------------------------+ 1 row in set (0.03 sec) 1, if column is added earlier INSTANT ADD implementation Copyright © 2024, Oracle and/or its affiliates
  • 32. INSTANT ADD/DROP Column 32 Example and Limitation Copyright © 2024, Oracle and/or its affiliates Here is what I tried on my system : mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 8388608 | +----------+ 1 row in set (0.22 sec) mysql> alter table t1 add column c4 char(10), algorithm=copy; Query OK, 8388608 rows affected (29.17 sec) Records: 8388608 Duplicates: 0 Warnings: 0 mysql> alter table t1 add column c5 char(10), algorithm=instant; Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0
  • 33. 33 INSTANT ADD/DROP Column Limitations ● No support for COMPRESSED tables (seldom used) ● No support for tables with a full-text index ● No support for table residing in DD Tablespace (Not needed) ● No support for temporary tables Blog 1 link here Blog 2 link here Copyright © 2024, Oracle and/or its affiliates
  • 34. 34 Thank you Copyright © 2024, Oracle and/or its affiliates
  • 35.
  • 36. The Snake Metaphor 36 ● A snake which can move from one cage to another connected cage. ● Needed redo log => snake body ● Each redo file => A cage snake moves into. ● When reached to the last cage, cages from left to be move to right side so that snake can move forward. ● Size of snake shirks when checkpoint_lsn moves forward ● Size of snake increases when more redos are written. Dynamic Configuration of REDOs