Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 5.5.25
-
Fix Version/s: 5.5.27
-
Component/s: None
-
Labels:None
Description
Starting with MariaDB 5.5.22 (more exactly: somewhere between r3337 and r3349 in the maria-5.5 tree) simple MEMORY tables start to consume more memory.
Example:
create table t1 (c1 int, index (c1)) engine memory;
– load 50 mio random rows
show table status;
Calculating bytes per row gives:
5.5.r3337: 16 (data) + 16 (index) = 32 bytes total
5.5.r3349: 17 (data) + 25 (index) = 42 bytes total
Gliffy Diagrams
Attachments
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
The size increase for indexes are expected and what you have to pay for a 30 % - > 50% speedup in index handling. The cost is 1 long / per index entry. (ie 4 bytes for 32 bit system and 8 bytes systems)
The change for data comes that if you don't specify MAX_ROWS, we allocate smaller block size (=room for 1000 rows /block) instead of 'read_buffer_size". The effect is that for small set of rows we save a LOT of memory while for big number of rows there is a slight increase in the memory used as we need to allocate more blocks with a small overhead per block.