Bug #39220 NDB : TransactionBufferMemory parameter is incorrectly handled
Submitted: 3 Sep 2008 17:22 Modified: 8 Sep 2016 6:39
Reporter: Frazer Clement Email Updates:
Status: Verified Impact on me:
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S3 (Non-critical)
Version:mysql-5.1 OS:Any
Assigned to: CPU Architecture:Any

[3 Sep 2008 17:22] Frazer Clement
The TransactionBufferMemory parameter is used to control the size of the c_theAttributeBufferPool buffer pool in DBTC.  The requested size of buffer memory is divided by the buffer size to determine how many elements the buffer should have.

Currently the calculation divides the supplied byte size by the buffer size in words.  This means that 4 times as many buffers are allocated as requested.  For the default value of 1MB, this results in the allocation of ~4MB of buffers.

How to repeat:
Examine code / could adjust parameter and attempt to observe effect on NDBD memory footprint.

Suggested fix:
Modify calculation to divide by bytesize and evaluate whether it is then necessary to increase the default to allocate more buffers.  Inform users so that they can re-evaluate their settings, if they are non default.
[14 Mar 2016 19:13] MySQL Verification Team
This is especially true now with ndbMTd and it's now per TC so filing this as documentation bug. I doubt we can / should change how the parameter works but we can document properly how it behaves.

[4 May 2016 6:13] Jon Stephens
This is a software bug. Dev need to confirm that they won't ever fix it before we enshrine it in the documentation.