mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
Implement UNIV_BTR_AVOID_COPY, an optimization of page splits.
This commit is contained in:
parent
e67b5257a2
commit
8b2f33f873
3 changed files with 29 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2010-04-20 The InnoDB Team
|
||||
|
||||
* btr/btr0btr.c, include/univ.i:
|
||||
Implement UNIV_BTR_AVOID_COPY, for avoiding writes when a B-tree
|
||||
node is split at the first or last record.
|
||||
|
||||
2010-04-15 The InnoDB Team
|
||||
|
||||
* trx/trx0rec.c:
|
||||
|
|
|
@ -2015,7 +2015,17 @@ insert_right:
|
|||
}
|
||||
|
||||
/* 5. Move then the records to the new page */
|
||||
if (direction == FSP_DOWN) {
|
||||
if (direction == FSP_DOWN
|
||||
#ifdef UNIV_BTR_AVOID_COPY
|
||||
&& page_rec_is_supremum(move_limit)) {
|
||||
/* Instead of moving all records, make the new page
|
||||
the empty page. */
|
||||
|
||||
left_block = block;
|
||||
right_block = new_block;
|
||||
} else if (direction == FSP_DOWN
|
||||
#endif /* UNIV_BTR_AVOID_COPY */
|
||||
) {
|
||||
/* fputs("Split left\n", stderr); */
|
||||
|
||||
if (0
|
||||
|
@ -2058,6 +2068,14 @@ insert_right:
|
|||
right_block = block;
|
||||
|
||||
lock_update_split_left(right_block, left_block);
|
||||
#ifdef UNIV_BTR_AVOID_COPY
|
||||
} else if (!split_rec) {
|
||||
/* Instead of moving all records, make the new page
|
||||
the empty page. */
|
||||
|
||||
left_block = new_block;
|
||||
right_block = block;
|
||||
#endif /* UNIV_BTR_AVOID_COPY */
|
||||
} else {
|
||||
/* fputs("Split right\n", stderr); */
|
||||
|
||||
|
|
|
@ -205,6 +205,10 @@ operations (very slow); also UNIV_DEBUG must be defined */
|
|||
adaptive hash index */
|
||||
#define UNIV_SRV_PRINT_LATCH_WAITS /* enable diagnostic output
|
||||
in sync0sync.c */
|
||||
#define UNIV_BTR_AVOID_COPY /* when splitting B-tree nodes,
|
||||
do not move any records when
|
||||
all the records would
|
||||
be moved */
|
||||
#define UNIV_BTR_PRINT /* enable functions for
|
||||
printing B-trees */
|
||||
#define UNIV_ZIP_DEBUG /* extensive consistency checks
|
||||
|
|
Loading…
Reference in a new issue