1. 14 Sep, 2021 3 commits
    • Marko Mäkelä's avatar
      MDEV-26356 Adaptive purge scheduling based on redo log fill factor · ea52a3eb
      Marko Mäkelä authored
      This should be equivalent to pull request #1889 by Krunal Bauskar.
      
      The existing logic in purge_coordinator_state::do_purge()
      activates a number of the configured innodb_purge_threads
      based on the history list length. Activating more purge worker
      tasks should shrink the history list faster. But, more purge
      workers will also generate more redo log, which may slow down
      writes by user connections.
      
      row_purge_parse_undo_rec(): Revert the work-around that was added in
      commit 46904424.
      
      purge_coordinator_state: Keep track of the redo log fill factor
      (how big percentage of innodb_log_file_size is being occupied by
      log records that were generated since the latest checkpoint).
      If the redo log is getting full, log checkpoints will be triggered
      more frequently, and user threads may end up waiting in
      log_free_check(). We try to reduce purge-induced jitter in overall
      throughput by throttling down the active number of purge tasks as
      the log checkpoint age is approaching the log size (in other words,
      the redo log fill factor is approaching 100%).
      ea52a3eb
    • Marko Mäkelä's avatar
      MDEV-26356 preparation: Refactor purge_state · 717a3215
      Marko Mäkelä authored
      purge_coordinator_timer_callback(): Remove. We will have
      purge_coordinator_timer invoke purge_coordinator_callback()
      directly.
      
      srv_master_callback(): Invoke srv_wake_purge_thread_if_not_active()
      instead of purge_coordinator_timer_callback(). That is, we will
      trigger purge_coordinator_callback() once per second if there is
      any work to be done.
      
      purge_state::do_purge(): Replaces srv_do_purge(),
      purge_coordinator_callback_low(), and
      purge_coordinator_timer_callback(). The static variables
      inside srv_do_purge() were moved to purge_state data members.
      717a3215
    • Marko Mäkelä's avatar
      MDEV-24512 fixup: Remove after_task_callback · 03e4cb24
      Marko Mäkelä authored
      In commit ff5d306e we removed
      dbug_after_task_callback but forgot to revert the rest of
      commit bada05a8.
      03e4cb24
  2. 13 Sep, 2021 1 commit
  3. 11 Sep, 2021 21 commits
  4. 10 Sep, 2021 12 commits
    • Vladislav Vaintroub's avatar
      Early return from auth_socket system checks on Windows · 54f79a0f
      Vladislav Vaintroub authored
      No need to run through all system checks, we already know
      it is not possible to authenticate with AF_UNIX socket.
      54f79a0f
    • Vladislav Vaintroub's avatar
      8ada1440
    • Vladislav Vaintroub's avatar
    • Marko Mäkelä's avatar
      MDEV-26537 InnoDB corrupts files due to incorrect st_blksize calculation · d09426f9
      Marko Mäkelä authored
      The st_blksize returned by fstat(2) is not documented to be
      a power of 2, like we assumed in
      commit 58252fff (MDEV-26040).
      While on Linux, the st_blksize appears to report the file system
      block size (which hopefully is not smaller than the sector size
      of the underlying block device), on FreeBSD we observed
      st_blksize values that might have been something similar to st_size.
      
      Also IBM AIX was affected by this. A simple test case would
      lead to a crash when using the minimum innodb_buffer_pool_size=5m
      on both FreeBSD and AIX:
      
      seq -f 'create table t%g engine=innodb select * from seq_1_to_200000;' \
      1 100|mysql test&
      seq -f 'create table u%g engine=innodb select * from seq_1_to_200000;' \
      1 100|mysql test&
      
      We will fix this by not trusting st_blksize at all, and assuming that
      the smallest allowed write size (for O_DIRECT) is 4096 bytes. We hope
      that no storage systems with larger block size exist. Anything larger
      than 4096 bytes should be unlikely, given that it is the minimum
      virtual memory page size of many contemporary processors.
      
      MariaDB Server on Microsoft Windows was not affected by this.
      
      While the 512-byte sector size of the venerable Seagate ST-225 is still
      in widespread use, the minimum innodb_page_size is 4096 bytes, and
      innodb_log_file_size can be set in integer multiples of 65536 bytes.
      
      The only occasion where InnoDB uses smaller data file block sizes than
      4096 bytes is with ROW_FORMAT=COMPRESSED tables with KEY_BLOCK_SIZE=1
      or KEY_BLOCK_SIZE=2 (or innodb_page_size=4096). For such tables,
      we will from now on preallocate space in integer multiples of 4096 bytes
      and let regular writes extend the file by 1024, 2048, or 3072 bytes.
      
      The view INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES.FS_BLOCK_SIZE
      should report the raw st_blksize.
      
      For page_compressed tables, the function fil_space_get_block_size()
      will map to 512 any st_blksize value that is larger than 4096.
      
      os_file_set_size(): Assume that the file system block size is 4096 bytes,
      and only support extending files to integer multiples of 4096 bytes.
      
      fil_space_extend_must_retry(): Round down the preallocation size to
      an integer multiple of 4096 bytes.
      d09426f9
    • Vladislav Vaintroub's avatar
      b873651e
    • Vicențiu Ciorbaru's avatar
      Expand performance_schema tables definitions with column comments · 8fe927e6
      Vicențiu Ciorbaru authored
      Cover all columns that did not have comments. Adjust docs based off of
      MariaDB implementation.
      8fe927e6
    • Haidong Ji's avatar
      MDEV-25325 built-in documentation for performance_schema tables · cc71dc0b
      Haidong Ji authored
      Improve documentation of performance_schema tables by appending COLUMN
      comments to tables. Additionally improve test coverage and update corresponding
      tests.
      
      This is part of the patch covering newer columns and tables in 10.5.
      cc71dc0b
    • Vicențiu Ciorbaru's avatar
    • Eugene Kosov's avatar
      MDEV-25951 followup · 4f85eadf
      Eugene Kosov authored
      FTS indexes has a prefix_len=1 or prefix_len=0 as stated by comment in
      mysql_prepare_create_table().
      
      Thus, a newly added assertion should be relaxed for FTS indexes.
      4f85eadf
    • Vladislav Vaintroub's avatar
      Speedup build of the MSI package · 1c378f1b
      Vladislav Vaintroub authored
      1c378f1b
    • Vladislav Vaintroub's avatar
      MDEV-26579 fixup · f68c6ccd
      Vladislav Vaintroub authored
      f68c6ccd
    • Vladislav Vaintroub's avatar
      MDEV-26579 Support minor MSI in Windows installer. · ca4bc3e3
      Vladislav Vaintroub authored
      With this patch, 4-component MSI version can be used, e.g by setting
      TINY_VERSION variable in CMake, or by adding a string, e.g
      MYSQL_VERSION_EXTRA=-2
      which sets TINY_VERSION to 2, and also changes the package name.
      
      The 4-component MSI versions do not support MSI major upgrades, only minor
      ones, i.e do not reinstall components, just update existing ones based
      on versioning rules.
      
      To support these rules, add DefaultVersion for the files that won't
      otherwise be versioned - headers, static and import libraries,
      pdbs, text - xml, python and perl scripts Also silence WiX warning
      that MSI won't store hashes for those files anymore.
      ca4bc3e3
  5. 09 Sep, 2021 3 commits