- 博客(20)
- 论坛 (3)
- 问答 (1)
- 收藏
- 关注
原创 innodb buffer pool管理--LRU调整
buf_LRU_old_adjust_len(buf_pool): //old_len==512,new_len=min(512*378/1024, 512-25),其实是512的3/8 // buf_pool->LRU_old_ratio 为378(innodb_old_blocks_pct默认值是37) old_len = buf_pool->LRU_old_len;
2017-05-30 22:23:46
381
原创 MySQLTuner--使用方法
Important Usage Guidelines: To run the script with the default options, run the script without arguments Allow MySQL server to run for at least 24-48 hours before trusting suggestions
2017-05-29 17:31:09
962
原创 MySQLTuner工具--效果
在阿里云博客看到一款性能统计工具,实验了一把,感觉有几项可以关注下。https://yq.aliyun.com/articles/52879?utm_content=m_14134[mysql26@localhost ~]$ ./tun --user root --socket /home/mysql26/bin/mysql.sock >> MySQLTuner 1.7.2 - Maj
2017-05-29 17:09:26
2747
原创 xshell连接本机虚拟机里的Linux环境
1、在Linux环境里执行ifconfig查看其IP2、在xshell里配置对应的IP就可以3、配置登录用户和密码4、即可登录
2017-05-29 17:00:57
530
原创 innodb double write buffer批量刷场景
buf_flush_batch-> buf_do_LRU_batch | buf_do_flush_list_batch->buf_flush_page_and_try_neighbors-> buf_flush_try_neighbors-> buf_flush_page有后台线程,也有前台用户线程触发checkpoint,此处是FLUSH LIST log_make_checkpoin
2017-05-28 09:34:56
412
原创 innodb double write buffer刷单页场景
buf_page_get_gen(debug)->buf_flush_page_try-> buf_flush_page-> buf_flush_write_block_low-> buf_dblwr_write_single_pagebuf_LRU_get_free_block ->buf_flush_single_page_from_LRU-> buf_flush_page如果在LRU
2017-05-27 22:14:01
404
转载 sync、fsync、fdatasync知识点
1.缓冲区简介人生三大错觉之一:在调用函数write()时,我们认为该函数一旦返回,数据便已经写到了文件中.但是这种概念只是宏观上的.实际上,操作系统实现某些文件I/O时(如磁盘文件),为了保证I/O的效率,在内核通常会用到一片专门的区域(内存或独立的I/O地址空间)作为I/O数据缓冲区.它用在输入输出设备和CPU之间,用来缓存数据,使得低速的设备和高速的CPU能够协调工作避免低速的输入输出设
2017-05-26 22:45:30
707
原创 innodb double write buffer--buf_dblwr_add_to_batch调用write、fsync的函数buf_dblwr_flush_buffered_writes
真正write、fsync double write到磁盘的函数 //如果不使用double write,那么fsync操作系统内容到磁盘。会有这种情况吗,调用批量函数的时候,已经排除这种情况了? if (!srv_use_doublewrite_buf || buf_dblwr == NULL) { /* Sync the writes to the disk. */ bu
2017-05-26 22:43:36
584
原创 innodb double write buffer--buf_dblwr_add_to_batch
将脏页放到double write buffer中。等待满。如果此时已满则1M 1M刷write、fsync(系统表空间)到磁盘。voidbuf_dblwr_add_to_batch(/*====================*/ buf_page_t* bpage) /*!< in: buffer block to write */{try_again: mutex_e
2017-05-26 22:36:53
498
原创 show engine innodb status函数接口
ha_innodb.cc:innodb_show_status主要调用函数为:srv_printf_innodb_monitor有兴趣的可以gdb跟踪下,看到输出结果对齐的很整齐,其实是通过塞空格达到的效果。
2017-05-24 22:09:03
369
原创 innodb double write buffer--buf_dblwr_write_single_page
写一个页到double write buffer,sync。size = 2 * TRX_SYS_DOUBLEWRITE_BLOCK_SIZE;//2M,即128页n_slots = size - srv_doublewrite_batch_size;//默认120页用于单页刷的double write只有8个os_event_reset(buf_dblwr->s_event);os_e
2017-05-21 21:59:32
540
原创 innodb double write buffer--刷新页
函数是buf_flush_write_block_lowvoid buf_flush_write_block_low(/*======================*/ buf_page_t* bpage, /*!< in: buffer block to write */ buf_flush_t flush_type, /*!< in: type of flush */ bool
2017-05-21 21:51:43
379
原创 innodb double write buffer--struct
/** Doublewrite control struct */struct buf_dblwr_t{ ib_mutex_t mutex; /*!< mutex protecting the first_free field and write_buf */ ulint block1; /*!< the page number of the first doublewrite block
2017-05-21 16:27:27
518
原创 系统表空间第6页Transaction system header页关于double write内容
double buffer信息存放在ibdata文件的第6个页中,偏移位置在页面的最后200个字节处。TRX_SYS_DOUBLEWRITE_FSEG double buffer所在段的段头信息TRX_SYS_DOUBLEWRITE_MAGIC 用来判断是否已经初始化过该2次写页面TRX_SYS_DOUBLEWRITE_BLOCK
2017-05-20 20:58:17
384
原创 MySQL快速修改表结构,只针对更改varchar类型字段长度
1、创建表结构 create table t2(id int,c varchar(10));2、插入数据 insert into t1 values(1,'aaaaaaaaaa');3、创建需要更改成的临时表 create table t2(id int,c varchar(20));4、锁表 flush tables with read
2017-05-16 21:38:05
5417
转载 MySQL Innodb_fast_shutdown参数的内部过程介绍
http://blog.itpub.net/15498/viewspace-2136014/Innodb_fast_shutdown参数告诉innodb在它关闭的时候该做什么工作,innodb_fast_shutdown影响着innodb表的行为,该参数有0,1,2三个值可以选择:0表示在innodb关闭的时候,需要purge all, merge insert buffer,
2017-05-14 21:59:09
1350
原创 innodb purge协调线程
分为3个阶段第一阶段:while循环中调用rseg_history_len= srv_do_purge(srv_n_purge_threads, &n_total_purged); while退出循环的条件 1)srv_purge_should_exit(n_total_purged)确定: Shutdown时退出。当innod
2017-05-14 21:48:43
588
原创 innodb purge--二级索引
1、流程:row_purge_remove_sec_if_poss if (row_purge_remove_sec_if_poss_leaf(node, index, entry)) { return; }retry: success = row_purge_remove_sec_if_poss_tree(node, index, entry);
2017-05-14 19:47:56
387
原创 innodb purge--聚集索引
row_purge_remove_clust_if_poss_low if(node->roll_ptr != row_get_rec_roll_ptr(rec, index, offsets)) { /*Someone else has modified the record later: do not remove */ gotofunc_exit;
2017-05-14 17:08:57
532
原创 innodb 回滚段内存结构
1、将undo页插入historylist时,如果是第一次插入,即该回滚段最早的事务,将相关信息保存到回滚段的内存结构中,即下面几个成员保存的是回滚段中最老事务的信息: trx_commit->trx_commit_low->trx_write_serialisation_history->trx_undo_update_cleanup->trx_purge_add_update_undo_
2017-05-07 17:30:32
1780
空空如也
yzs87的留言板
发表于 2020-01-02 最后回复 2020-01-02
写博客能不能添加个撤销键
发表于 2018-01-04 最后回复 2018-01-06
innodb插入意向锁如何使用
发表于 2015-06-07 最后回复 2015-06-07
innodb插入意向锁如何使用
2015-06-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝