Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-19506

Remove the global sequence DICT_HDR_ROW_ID for DB_ROW_ID

    XMLWordPrintable

    Details

      Description

      InnoDB tables that lack a primary key (and any UNIQUE INDEX whose all columns are NOT NULL) will use an internally generated index, called GEN_CLUST_INDEX(DB_ROW_ID) in the InnoDB data dictionary, and hidden from the SQL layer.

      The 48-bit DB_ROW_ID is being assigned from a global sequence that is persisted in the DICT_HDR page.

      There is absolutely no reason for the DB_ROW_ID to be globally unique across all InnoDB tables. We should replace dict_sys_get_new_row_id() with a simple atomic increment of a counter in dict_table_t. When the table is opened for the first time, btr_cur_instant_init_low() can initialize the per-table counter by doing something similar to row_search_max_autoinc().

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              kevg Eugene Kosov
              Reporter:
              marko Marko Mäkelä
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated: