YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense alongwiththisprogram;ifnot,writetotheFreeSoftware
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
/* This file is included by all internal myisam files */
typedefstruct st_mi_status_info
{
ha_rows records; /* Rows in table */
ha_rows del; /* Removed rows */
my_off_t empty; /* lost space in datafile */
my_off_t key_empty; /* lost space in indexfile */
my_off_t key_file_length;
my_off_t data_file_length;
ha_checksum checksum;
my_bool uncacheable; /* Active concurrent insert */
} MI_STATUS_INFO;
typedefstruct st_mi_state_info
{ struct
{ /* Fileheader */
uchar file_version[4];
uchar options[2];
uchar header_length[2];
uchar state_info_length[2];
uchar base_info_length[2];
uchar base_pos[2];
uchar key_parts[2]; /* Key parts */
uchar unique_key_parts[2]; /* Key parts + unique parts */
uchar keys; /* number of keys in file */
uchar uniques; /* number of UNIQUE definitions */
uchar language; /* Language for indexes */
uchar max_block_size_index; /* max keyblock size */
uchar fulltext_keys;
uchar not_used; /* To align to 8 */
} header;
MI_STATUS_INFO state;
ha_rows split; /* number of split blocks */
my_off_t dellink; /* Link to next removed block */
ulonglong auto_increment;
ulong process; /* process that updated table last */
ulong unique; /* Unique number for this process */
ulong update_count; /* Updated for each write lock */
ulong status;
ulong *rec_per_key_part;
ha_checksum checksum; /* Table checksum */
my_off_t *key_root; /* Start of key trees */
my_off_t *key_del; /* delete links for trees */
my_off_t rec_per_key_rows; /* Rows when calculating rec_per_key */
ulong sec_index_changed; /* Updated when new sec_index */
ulong sec_index_used; /* which extra index are in use */
ulonglong key_map; /* Which keys are in use */
ulong version; /* timestamp of create */
time_t create_time; /* Time when created database */
time_t recover_time; /* Time for last recover */
time_t check_time; /* Time for last check */
uint sortkey; /* sorted by this key (not used) */
uint open_count;
uint8 changed; /* Changed since myisamchk */
uint8 dupp_key; /* Lastly processed index with */ /* violated uniqueness constraint */
/* the following isn't saved on disk */
uint state_diff_length; /* Should be 0 */
uint state_length; /* Length of state header in file */
ulong *key_info;
} MI_STATE_INFO;
typedefstruct st_mi_base_info
{
my_off_t keystart; /* Start of keys */
my_off_t max_data_file_length;
my_off_t max_key_file_length;
my_off_t margin_key_file_length;
ha_rows records, reloc; /* Create information */
ulong mean_row_length; /* Create information */
ulong reclength; /* length of unpacked record */
ulong pack_reclength; /* Length of full packed rec. */
ulong min_pack_length;
ulong max_pack_length; /* Max possibly length of packed rec.*/
ulong min_block_length;
ulong fields, /* fields in table */
pack_fields; /* packed fields in table */
uint rec_reflength; /* = 2-8 */
uint key_reflength; /* = 2-8 */
uint keys; /* same as in state.header */
uint auto_key; /* Which key-1 is a auto key */
uint blobs; /* Number of blobs */
uint pack_bits; /* Length of packed bits */
uint max_key_block_length; /* Max block length */
uint max_key_length; /* Max key length */ /* Extra allocation when using dynamic record format */
uint extra_alloc_bytes;
uint extra_alloc_procent; /* The following are from the header */
uint key_parts, all_key_parts, base_key_parts;
} MI_BASE_INFO;
/* Structs used intern in database */
typedefstruct st_mi_blob /* Info of record */
{
ulong offset; /* Offset to blob in record */
uint pack_length; /* Type of packed length */
ulong length; /* Calc:ed for each record */
} MI_BLOB;
typedefstruct st_mi_isam_share
{ /* Shared between opens */
MI_STATE_INFO state;
MI_BASE_INFO base;
MI_KEYDEF ft2_keyinfo; /* Second-level ft-key definition */
MI_KEYDEF *keyinfo; /* Key definitions */
MI_UNIQUEDEF *uniqueinfo; /* unique definitions */
HA_KEYSEG *keyparts; /* key part info */
MI_COLUMNDEF *rec; /* Pointer to field information */
MI_PACK pack; /* Data about packed records */
MI_BLOB *blobs; /* Pointer to blobs */
LIST *in_use; /* List of threads using this table */ char *unique_file_name; /* realpath() of index file */ char *data_file_name, /* Resolved path names from symlinks */
*index_file_name;
uchar *file_map; /* mem-map of file if possible */
KEY_CACHE *key_cache; /* ref to the current key cache */ /* To mark the key cache partitions containing dirty pages for this file */
ulonglong dirty_part_map;
MI_DECODE_TREE *decode_trees;
uint16 *decode_tables; /* Function to use for a row checksum. */ int(*read_record) (struct st_myisam_info *, my_off_t, uchar*); int(*write_record) (struct st_myisam_info *, const uchar*); int(*update_record) (struct st_myisam_info *, my_off_t, const uchar*); int(*delete_record) (struct st_myisam_info *); int(*read_rnd) (struct st_myisam_info *, uchar*, my_off_t, my_bool); int(*compare_record) (struct st_myisam_info *, const uchar*);
ha_checksum(*calc_checksum) (struct st_myisam_info *, const uchar*); /* calculate checksum for a row during check table */
ha_checksum(*calc_check_checksum)(struct st_myisam_info *, const uchar *); int(*compare_unique) (struct st_myisam_info *, MI_UNIQUEDEF *, const uchar *record, my_off_t pos);
size_t (*file_read) (MI_INFO *, uchar *, size_t, my_off_t, myf);
size_t (*file_write) (MI_INFO *, const uchar *, size_t, my_off_t, myf);
invalidator_by_filename invalidator; /* query cache invalidator */ /* query cache invalidator for changing state */
invalidator_by_filename chst_invalidator;
ulong this_process; /* processid */
ulong last_process; /* For table-change-check */
ulong last_version; /* Version on start */
ulong options; /* Options used */
ulong min_pack_length; /* These are used by packed data */
ulong max_pack_length;
ulong state_diff_length;
uint rec_reflength; /* rec_reflength in use now */
ulong vreclength; /* full reclength, including vcols */
uint unique_name_length;
uint32 ftkeys; /* Number of full-text keys + 1 */
File kfile; /* Shared keyfile */
File data_file; /* Shared data file */ int index_mode; /* mode on index file on open */ int data_mode; /* mode of data file on open */
uint reopen; /* How many times reopened */
uint w_locks,r_locks,tot_locks; /* Number of read/write locks */
uint blocksize; /* blocksize of keyfile */
myf write_flag; enum data_file_type data_file_type; /* Below flag is needed to make log tables work with concurrent insert */
my_bool is_log_table; /* This is 1 if they table checksum is of old type */
my_bool has_null_fields;
my_bool has_varchar_fields;
my_bool changed, /* If changed since lock */
global_changed, /* If changed since open */
not_flushed, temporary, delay_key_write, concurrent_insert;
my_bool deleting; /* we are going to delete this table */
THR_LOCK lock;
mysql_mutex_t intern_lock; /* Locking for use with _locking */
mysql_rwlock_t *key_root_lock;
size_t mmaped_length;
uint nonmmaped_inserts; /* counter of writing in non-mmaped
area */
mysql_rwlock_t mmap_lock;
} MYISAM_SHARE;
struct st_myisam_info
{
MYISAM_SHARE *s; /* Shared between opens */
MI_STATUS_INFO *state, save_state;
MI_BLOB *blobs; /* Pointer to blobs */
MI_BIT_BUFF bit_buff; /* accumulate indexfile changes between writes */
TREE *bulk_insert;
DYNAMIC_ARRAY *ft1_to_ft2; /* used only in ft1->ft2 conversion */
MEM_ROOT ft_memroot; /* used by the parser */
MYSQL_FTPARSER_PARAM *ftparser_param; /* share info between init/deinit */ void *external_ref; /* For MariaDB TABLE */
LIST in_use; /* Thread using this table */ char *filename; /* parameter to open filename */
uchar *buff, /* Temp area for key */
*lastkey,*lastkey2; /* Last used search key */
uchar *first_mbr_key; /* Searhed spatial key */
uchar *rec_buff; /* Tempbuff for recordpack */
uchar *int_keypos, /* Save position for next/previous */
*int_maxpos; /* -""- */
uint int_nod_flag; /* -""- */
uint32 int_keytree_version; /* -""- */ int (*read_record)(struct st_myisam_info*, my_off_t, uchar*);
invalidator_by_filename invalidator; /* query cache invalidator */
ulong this_unique; /* unique filenumber or thread */
ulong last_unique; /* last unique number */
ulong this_loop; /* counter for this open */
ulong last_loop; /* last used counter */
my_off_t lastpos, /* Last record position */
nextpos; /* Position to next record */
my_off_t save_lastpos;
my_off_t pos; /* Intern variable */
my_off_t last_keypage; /* Last key page read */
my_off_t last_search_keypage; /* Last keypage when searching */
my_off_t dupp_key_pos;
ha_checksum checksum; /* Temp storage for row checksum */ /* QQ:thefollowingtwoxxx_lengthfieldsshouldberemoved, astheyarenotcompatiblewithparallelrepair
*/
ulong packed_length, blob_length; /* Length of found, packed record */ int dfile; /* The datafile */
uint open_flag; /* Parameters for open */
uint opt_flag; /* Optim. for space/speed */
uint once_flags; /* For MYISAMMRG */
uint update; /* If file changed since open */ int lastinx; /* Last used index */
uint lastkey_length; /* Length of key in lastkey */
uint last_rkey_length; /* Last length in mi_rkey() */ enum ha_rkey_function last_key_func; /* CONTAIN, OVERLAP, etc */
uint save_lastkey_length;
uint pack_key_length; /* For MYISAMMRG */
uint16 last_used_keyseg; /* For MyISAMMRG */ int errkey; /* Got last error on this key */ int lock_type; /* How database was locked */ int tmp_lock_type; /* When locked by readinfo */
uint data_changed; /* Somebody has changed data */
uint save_update; /* When using KEY_READ */ int save_lastinx;
LIST open_list;
IO_CACHE rec_cache; /* When cacheing records */
uint preload_buff_size; /* When preloading indexes */
myf lock_wait; /* is 0 or MY_SHORT_WAIT */
my_bool was_locked; /* Was locked in panic */
my_bool intern_lock_locked; /* locked in mi_extra() */
my_bool append_insert_at_end; /* Set if concurrent insert */
my_bool quick_mode; /* If info->buff can't be used for rnext */
my_bool page_changed; /* If info->buff has to be reread for rnext */
my_bool buff_used;
my_bool create_unique_index_by_sort;
my_bool has_cond_pushdown;
index_cond_func_t index_cond_func; /* Index condition function */ void *index_cond_func_arg; /* parameter for the func */
rowid_filter_func_t rowid_filter_func; /* rowid filter check function */ void *rowid_filter_func_arg; /* parameter for the func */
THR_LOCK_DATA lock;
uchar *rtree_recursion_state; /* For RTREE */ int rtree_recursion_depth;
};
#define USE_WHOLE_KEY (HA_MAX_KEY_BUFF*2) /* Use whole key in _mi_search() */ #define F_EXTRA_LCK -1 /* bits in opt_flag */ #define MEMMAP_USED 32U #define REMEMBER_OLD_POS 64U
/* We use MY_ALIGN_DOWN here mainly to ensure that we get stable values for mysqld --help ) */ #define KEY_BUFFER_INIT MY_ALIGN_DOWN(1024L*1024L-MALLOC_OVERHEAD, IO_SIZE) #define READ_BUFFER_INIT MY_ALIGN_DOWN(1024L*256L-MALLOC_OVERHEAD, 1024) #define SORT_BUFFER_INIT MY_ALIGN_DOWN(1024L*1024L*128L-MALLOC_OVERHEAD, 1024) #define MIN_SORT_BUFFER 4096U
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.15Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.