mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 19:37:16 +02:00
MDEV-5834: Merge Kakao Defragmentation implementation to MariaDB 10.1
Merge https://github.com/kakao/mariadb-10.0 that contains Facebook's implementation for defragmentation facebook/mysql-5.6@a2d3a74 facebook/mysql-5.6@def96c8 facebook/mysql-5.6@9c67c5d facebook/mysql-5.6@921a81b facebook/mysql-5.6@aa519bd facebook/mysql-5.6@fea7d13 facebook/mysql-5.6@09b29d3 facebook/mysql-5.6@9284abb facebook/mysql-5.6@dbd623d facebook/mysql-5.6@aed55dc facebook/mysql-5.6@aad5c82 This version does not add new SQL-syntax and new handler API function. Instead optimize table is mapped to defragment table if innodb_defragment=ON, by default the feature is off. Contains changes authored by Sunguck Lee (Kakao).
This commit is contained in:
parent
e974b56438
commit
6dad23f04a
91 changed files with 5772 additions and 168 deletions
104
storage/innobase/include/ut0timer.h
Normal file
104
storage/innobase/include/ut0timer.h
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 2013, 2014, Facebook, Inc. All Rights Reserved.
|
||||
Copyright (c) 2014, SkySQL Ab. All Rights Reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along with
|
||||
this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
/********************************************************************//**
|
||||
@file include/ut0timer.h
|
||||
Timer rountines
|
||||
|
||||
Created 30/07/2014 Jan Lindström jan.lindstrom@skysql.com
|
||||
modified from https://github.com/facebook/mysql-5.6/commit/c75a413edeb96eb99bf11d7269bdfea06f96d6b6
|
||||
*************************************************************************/
|
||||
#ifndef ut0timer_h
|
||||
#define ut0timer_h
|
||||
|
||||
#include "univ.i"
|
||||
#include "data0type.h"
|
||||
#include <my_rdtsc.h>
|
||||
|
||||
/* Current timer stats */
|
||||
extern struct my_timer_unit_info ut_timer;
|
||||
|
||||
/**************************************************************//**
|
||||
Function pointer to point selected timer function.
|
||||
@return timer current value */
|
||||
extern ulonglong (*ut_timer_now)(void);
|
||||
|
||||
/**************************************************************//**
|
||||
Sets up the data required for use of my_timer_* functions.
|
||||
Selects the best timer by high frequency, and tight resolution.
|
||||
Points my_timer_now() to the selected timer function.
|
||||
Initializes my_timer struct to contain the info for selected timer.*/
|
||||
UNIV_INTERN
|
||||
void ut_init_timer(void);
|
||||
|
||||
/**************************************************************//**
|
||||
Return time passed since time then, automatically adjusted
|
||||
for the estimated timer overhead.
|
||||
@return time passed since "then" */
|
||||
UNIV_INLINE
|
||||
ulonglong
|
||||
ut_timer_since(
|
||||
/*===========*/
|
||||
ulonglong then); /*!< in: time where to calculate */
|
||||
/**************************************************************//**
|
||||
Get time passed since "then", and update then to now
|
||||
@return time passed sinche "then" */
|
||||
UNIV_INLINE
|
||||
ulonglong
|
||||
ut_timer_since_and_update(
|
||||
/*======================*/
|
||||
ulonglong *then); /*!< in: time where to calculate */
|
||||
/**************************************************************//**
|
||||
Convert native timer units in a ulonglong into seconds in a double
|
||||
@return time in a seconds */
|
||||
UNIV_INLINE
|
||||
double
|
||||
ut_timer_to_seconds(
|
||||
/*=================*/
|
||||
ulonglong when); /*!< in: time where to calculate */
|
||||
/**************************************************************//**
|
||||
Convert native timer units in a ulonglong into milliseconds in a double
|
||||
@return time in milliseconds */
|
||||
UNIV_INLINE
|
||||
double
|
||||
ut_timer_to_milliseconds(
|
||||
/*=====================*/
|
||||
ulonglong when); /*!< in: time where to calculate */
|
||||
/**************************************************************//**
|
||||
Convert native timer units in a ulonglong into microseconds in a double
|
||||
@return time in microseconds */
|
||||
UNIV_INLINE
|
||||
double
|
||||
ut_timer_to_microseconds(
|
||||
/*=====================*/
|
||||
ulonglong when); /*!< in: time where to calculate */
|
||||
/**************************************************************//**
|
||||
Convert microseconds in a double to native timer units in a ulonglong
|
||||
@return time in microseconds */
|
||||
UNIV_INLINE
|
||||
ulonglong
|
||||
ut_microseconds_to_timer(
|
||||
/*=====================*/
|
||||
ulonglong when); /*!< in: time where to calculate */
|
||||
|
||||
#ifndef UNIV_NONINL
|
||||
#include "ut0timer.ic"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue