Bug #95898 InnoDB releases memory of table only on shutdown if table has FK constraint
| Submitted: | 20 Jun 2019 14:02 | Modified: | 18 Oct 2023 11:58 |
|---|---|---|---|
| Reporter: | Satya Bodapati (OCA) | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S2 (Serious) |
| Version: | 5.7, 5.7.26, 8.0.17, 5.7.27 | OS: | Any |
| Assigned to: | CPU Architecture: | Any |
[20 Jun 2019 14:02]
Satya Bodapati
[21 Jun 2019 12:41]
MySQL Verification Team
Hello Satya, Thank you for the report and test case. Verified as described with 5.7.26 build. regards, Umesh
[12 Jul 2019 7:21]
Satya Bodapati
Hey Umesh, May I know why this is S3? Non-critical. It is in fact a serious issue. With this bug, you can make mysql occupy entire ram and crash the server. Also, I have seeen this 13-15GB RAM of dict_cache from customer production environment.
[12 Jul 2019 7:51]
MySQL Verification Team
Hello Satya, I didn't change initial severity set at the time of bug report, moreover triage has already classified it as *serious* and so it has already got attention internally. For now setting in here as well to Sev2. Thank you! regards, Umesh
[12 Jul 2019 7:52]
Satya Bodapati
Thank you Umesh!
[12 Aug 2019 18:09]
Peter Zaitsev
So is MySQL 8 also affected or not ? Considering how much dictionary code was changed in 8.0 I would not just assume it is also affected
[13 Aug 2019 4:43]
Satya Bodapati
It exists in 8.0 too. I verified from code. Will also try to get "dictionary memory allocated" from SHOW ENGINE INNODB STATUS
dict/dict0dict.cc
dict_foreign_add_to_cache():
/* We need to move the table to the non-LRU end of the table LRU
list. Otherwise it will be evicted from the cache. */
if (ref_table != NULL) {
dict_table_prevent_eviction(ref_table);
}
if (for_table != NULL) {
dict_table_prevent_eviction(for_table);
}
[13 Aug 2019 9:24]
MySQL Verification Team
Thank you Satya for confirming. I'll try to run provided mtr test case against 8.0.17 build and update here. regards, Umesh
[13 Aug 2019 9:53]
lalit Choudhary
Test run result with mysql 8.0.17 confirmed that this exists in 8.0 as well. DD memory allocation before shutdown. ---------------------- BUFFER POOL AND MEMORY ---------------------- Total large memory allocated 21978152960 Dictionary memory allocated 12155115330 Buffer pool size 1310718 Free buffers 7986 Database pages 1302670 Old database pages 480704 Modified db pages 106491
[13 Aug 2019 9:54]
lalit Choudhary
DD memory test
Attachment: mysql-memory-shutdown.test (application/octet-stream, text), 2.06 KiB.
[13 Aug 2019 9:54]
lalit Choudhary
DD memory test opt
Attachment: mysql-memory-shutdown-master.opt (application/octet-stream, text), 329 bytes.
[13 Aug 2019 9:54]
lalit Choudhary
DD memory test opt
Attachment: mysql-memory-shutdown-master.opt (application/octet-stream, text), 329 bytes.
[13 Aug 2019 15:34]
MySQL Verification Team
5.7.27, 8.0.17 - test results
Attachment: 95898_5.7.27_8.0.17.results (application/octet-stream, text), 183.11 KiB.
[18 Oct 2023 2:32]
Dan Stevens
Is this still an issue on all versions of mysql? This is potentially responsible for ~30G of memory usage on our production database running 5.7.43. We will gladly upgrade to a version where this is not an issue as it has required us to upgrade to the maximum memory allowed by our host.
[18 Oct 2023 11:58]
Satya Bodapati
It is the same. The issue exists on all MySQL versions. 5.7.x, 8.0.x, 8.1.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.044 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.