Make data (and index) block size configurable per database or per table

Registered by Yoshinori Matsunobu

Currently, the block size is fixed and needs to be re-compiled to change. On HDD, block size difference is normally negligible
but on SSD, it's significant. I recently did a simple random disk read benchmarks on Intel SSD (X25-E) then got the following number.
5.9k iops on 32KB i/o unit
9.2k iops on 16KB i/o unit
12.4k iops on 8KB i/o unit
20k iops on 1KB i/o unit
All of them are great numbers, but difference is significant.

According to Paul's comments, supporting configurable data block (not index block) would make sense because most of index blocks are generally cached in memory so random reads on SSDs do not happen so many times. And supporting only 1KB, 4KB, 8KB, 16KB and 32KB blocks also makes sense to avoid fragmentation.

Paul's comments:
---
A dynamic block size would be easy for the row pointer (.xtr) and data handle (.xtd) files. But it would be difficult for the index files (.xti). The reason is because if the way the index cache memory is managed. Managing one block size is much easier than managing multiple block sizes.

In addition, if we use multiple block sizes you get fragmentation, and the memory usage is not optimal.
---

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.