- 博客(92)
- 资源 (3)
- 收藏
- 关注
原创 mysql中双1控制源码分析
mysql中双1控制源码分析1、innodb_flush_log_at_trx_commit参数讨论参数含义:该参数主要是是来控制redo log的刷盘策略,有源码的调用栈可知,该参数生效的地方如下:#0 log_buffer_flush_to_disk (sync=true) at /mysql/zxz/mysqlsourcetest/mysql-5.7.21/storage/innobase/log/log0log.cc:1419#1 0x00000000019b1999 in innoba
2020-09-01 10:40:00 263
原创 go实现tcp服务端口转发
package mainimport ( "fmt" "log" "net" "os" "strconv" )func main() { //源端口 argument1 := os.Args[1] log.Println( "需要变更的源端口为: %d",argument1) //目的端口 argument2 := os.Args[2] log.Println( "变更后的目的端口为: %d",argument2).
2020-06-09 12:16:43 543
原创 MGR的前提与限制条件
MGR的前提与限制条件MGR的前提1、需要InnoDB的存储引擎;数据存储必须通过InnoDB事物型存储引擎,可以通过如下的参数设置来禁止其他的存储引擎,如下:disabled_storage_engines="MyISAM,BALCKHOLE,FEDERATED,ARCHIVE,MEMORY"2、通过MGR复制的每个表必须有一个自定义的组件挥着非null的唯一键能够通过它来确定事物...
2020-01-19 15:46:16 424
原创 msyql的线程池的源码分析
mysqld启动流程1、设置断点break mysqld_main2、启动时的bt栈(gdb) bt #0 mysqld_main (argc=4, argv=0x7fffffffdee8) at /mysql/zxz/tianyicloud/mysql-5.7.21/sql/mysqld.cc:4408 #1 0x0000000000e96...
2019-11-05 11:03:54 292
原创 gtid相关变量更改时机
mysql.gtid_exectued表更新实际通用修改时机:reset master 的时候清空;set global gtid_purged的时候设置;主库修改时机:binglog关闭时,该表不更新binlog打开时,该表binary log切换时更新从库修改时机:binlog开启log_slave_updates关闭,该表实时更新;binlog开启log_...
2019-08-27 18:08:31 178
原创 拷贝data文件恢复主从详细步骤
关闭从库的agent; 进入从库数据库执行stop slave; 关闭从库数据库; 将从库的整个mysql_data目录mv成mysql_data.old 关闭主库agent(防止心跳写入),同时防止应用向主库写入,即应当保持主库的这个值不再变化;将主库的mysql_data目录拷贝到从库; 启动主库agent; 去从库的data目录下面删除auto.cnf参数 启动...
2019-08-13 17:21:13 401
原创 mysql中的double write机制分析
介绍double write之前我们有必要了解partial page write问题:InnoDB的page size一般是16KB,其数据校验也是针对这16KB来计算的,将数据写入到磁盘以Page为单位进行操作的,其实。,如果磁盘是以16KB的速度写入的哈,是没有这方面的问题的,根本就用不到double write功能,但事实一般不是这样,目前一般是以512字节写入,例如只写入了4K时,发...
2019-06-27 16:46:33 364
原创 InnoDB行记录格式总结
在早期的innodb版本中,由于文件格式只有一种,但随着innodb引擎的发展,开发出了兼容早期版本的新文件格式,用于支持新的功能,因此InnoDB开始使用命名的文件格式Antelope:先前命名的,原始的InnoDB文件格式,支持两种行格式,compact和redundant, Barracuda:新的文件格式,它支持innoDB的所有行格式,而且包括新的行格式:compressed和dy...
2019-06-27 11:01:04 206
原创 :在主从服务器上,同一个表的表空间文件(idb文件)大小相差特别大,可能原因是什么,怎么解决?
可能的原因:1、MySQL表默认是InnoDB引擎且目前索引只支持B+树索引,在数据的增删改过程中,会导致表产生碎片,主从服务器上同张表的碎片率不同也会导致表空间相差很大2、主从表结构不一致,如从库可能比主库多索引3、主从表的行格式不一致,如主库为dynamic,从库为compressed4、个别云数据库在从库上可能采用特殊的并行复制技术,导致在从库上有更高的碎片率(有个极端的案例...
2019-06-27 09:40:40 821
原创 mysql中覆盖索引、联合索引、索引下推区别
1、覆盖索引:如果查询条件使用的是普通索引(或是联合索引的最左原则字段),查询结果是联合索引的字段或是主键,不用回表操作,直接返回结果,减少IO磁盘读写读取正行数据2、最左前缀:联合索引的最左 N 个字段,也可以是字符串索引的最左 M 个字符3、联合索引:根据创建联合索引的顺序,以最左原则进行where检索,比如(age,name)以age=1 或 age= 1 and name=‘张三’...
2019-06-26 11:04:54 12362
原创 为什么long_query_time设置了1秒,slow log中还会记录小于1秒的慢查询?
1、设置了全局的long_query_time未对当前mysql连接生效,2、打开了log_queries_not_using_indexes选项,记录了未走索引的SQL
2019-06-25 09:14:11 803
原创 MySQL已启用了slow query log且long_query_time=0.01,为什么有些慢SQL还是没被记录呢
1、在线动态设置long_query_time=0.01,但该设置对当前已建立的连接不会生效2、log_slow_admin_statements=0,因此ALTER、CREATEINDEX、ANALYZETABLE等操作即使超过long_query_time不会记录3、min_examined_row_limit设置非0值,SQL检查行数未超过该值不会记录4、slowlo...
2019-06-20 11:36:56 914
原创 InnoDB引擎表和myisam引擎表的区别
1、表锁差异myisam只支持表级锁,,innodb支持事务和行级锁,是innodb最大的特色,2、数据文件差异myisam属于堆表,myisam在磁盘存储上有三个文件,每个文件名以表名开头,扩展名指出文件类型。.frm 用于存储表的定义.MYD 用于存放数据.MYI 用于存放表索引innodb有两种存储方式,共享表空间存储和独立表空间存储3、索引...
2019-06-17 17:13:45 289
原创 redo buffer刷盘时机
1、每秒的master调用帧栈2、master线程每秒checkpoint调用3、page clean线程调用4、当前线程commit调用帧栈;5、innodb shutdown6、redo buffer不足...
2019-06-17 16:31:22 484
原创 gtid相关的设置
1、mysql.gtid_executed表修改时机在reset master时候会清空本表; 在set global gtid_purged的时候会设置本表;2、gtid_executed变量修改时机;在reset master时候会清空本变量; 在set global gtid_purged的时候会设置本变量; 在mysql启动的时候初始化设置gitd_exe...
2019-06-17 16:29:54 589
原创 mysql的数据盘为什么要做raid10
1、如果数据库的数据存储是nvmeflash卡,则直接使用,无需做任何raid;2、如果是sata盘,则根据是否满足性能需求而定。如果在实际使用中无法满足性能需求,则需要raid0,此外,虽然PaaS组件会有数据的多副本,在这种情况下也需要做好单机的数据保护,综合起来,所以需要raid10;...
2019-06-17 16:28:41 500
原创 如何做好一个合格程序员
从框架上分析代码,不要眼高手低,认真阅读代码的每一行,不懂的就一直专研或者问同事,不要自我觉得懂了明白了,绕过去,最后发现欺骗的还是你自己
2017-08-15 14:34:15 672
原创 MySQL中利用log file 和position来复制
基于log file和position的数据库复制准备条件:Centos虚拟机1的IP:192.168.28.128;Centos虚拟机2的IP:192.168.28.129; 主机上的操作1、 主机上添加授权用户:mysql> grant all on *.* to ‘zeng1’@’192.168.28.129’identified by ‘zxz’;2、
2016-09-13 16:02:21 727
原创 MySQL之group by 优化(1)
满足GROUP BY子句的最一般的方法是扫描整个表并创建一个新的临时表,表中每个组的所有行应为连续的,然后使用该临时表来找到组并应用累积函数(如果有)。在某些情况中,MySQL能够做得更好,即通过索引访问而不用创建临时表。执行GROUP BY子句的最一般的方法:先扫描整个表,然后创建一个新的临时表,表中每个组的所有行应为连续的,最后使用该临时表来找到组并应用聚集函数(如果有聚集函数)。
2016-08-26 16:04:53 693
原创 MySQL之order by 优化(1)
在多数情况下,可以通过索引来简化order by的操作,而不需要额外的using filesort来重新进行排序,但是order by中出现的排序的列需要满足最左前缀索引,注意(个人实操结果):当所选取的列,即select中出现的列不出现在order by中索引的时候,则不会对ordr by 进行优化,即所选取的列与order by待排序的列是一致的,不然仍然会使用using filesort
2016-08-26 14:33:29 578
原创 MySQL中的聚集索引和辅助索引知识详解
具体的文档参考官方文档15.8.91.当你定义一个主键时,InnnodDB存储引擎则把它当做聚集索引2.如果你没有定义一个主键,则InnoDB定位到第一个唯一索引,且该索引的所有列值均飞空的,则将其当做聚集索引。3如果表没有主键或合适的唯一索引INNODB会产生一个隐藏的行ID值6字节的行ID聚集索引,补充:由于实际的数据页只能按照一颗B+树进行排序,因此每张表只能有一个聚集索引,
2016-08-25 15:43:11 10154
原创 mysql的锁机制(1)
MySQL的InnoDB中什么情况下需要使用表锁。。1.事务需要更新大部分或全部数据,表又比较大,如果使用默认的行锁,不仅这个事务执行效率低,而且造成其他事务长时间等待和锁冲突,这种情况下可以考虑使用表锁来提高该事务的执行速度。2,事务设计多个表,比较复杂,很可能引起死锁,造成大量的事务回滚,这种情况也可以考虑一次性锁定事务设计的表,从而避免死锁,
2016-08-24 17:29:40 308
原创 Mysql中的explain执行计划详解(1)
创建一个表test_explain,并添加入下的数据mysql> create table test_explain( a int primary key, b int);Query OK, 0 rows affected (0.09 sec)mysql> insert into test_explain value(1,1),(2,2),(3,3),(4,4),(5,5);ex
2016-08-24 15:39:06 499
原创 编程之美中1的个数的问题
//采用最直接的方法,时间复杂度为O(N*logN);/*#include #include#include#includeusing namespace std; int num_one(int n){ int count=0; while(n) { count+=(n%10==1)?1:0; n/=10; } return count;}int core
2015-05-18 10:32:39 1101
原创 算法导论中如何求两个字符串的最长公共子序列
#include#includeusing namespace std;const int max_length=10;void print(int b[max_length][max_length],string X,int i,int j);void LCS(string X,string Y,int b[max_length][max_length],int m,int n ){
2015-05-08 15:42:34 830
原创 编程之美第三章-3.2-电话号码以及对应的单词
#include#includeusing namespace std;const int max_length=9;char c[10][10]={ "",//0 "",//1 "ABC",//2 "DEF",//3 "GHI",//4 "JKL",//5 "MNO",//6 "PQRS",//7 "TUV",//8 "WXYZ",//9};int total[
2015-05-08 14:22:45 659
原创 编程之美第三章-字符串移位包含的问题
#include#includeusing namespace std;bool find_str(string s1,string s2){ if(s1.empty()||s2.empty()) return false; string::size_type pos=s1.find(s2); return (pos!=string::npos)?true:false;}in
2015-05-08 14:07:28 521
原创 3.10分层打印二叉树的节点
#include#includeusing namespace std;struct Node{ char value; Node *left; Node *right;};void create(Node *&T){ char c; cin>>c; if('#'==c) { T=NULL; } else { T=new Node; T->value=
2015-04-28 10:52:20 600
原创 3.9已知二叉树的 前序遍历和中序遍历的结果,重构出原二叉树
#includeusing namespace std;struct Node{ char value; Node *left; Node *right;};//重构函数核心Node *Constructcore(char *start_preorder,char *end_preorder,char *start_inorder,char *end_inorder){ ch
2015-04-28 10:21:05 821 2
原创 程之美第3章结构之法-字符串及链表的探索3.7 队列中取最大值操作问题
#include#includeusing namespace std;class stack{private: vector vec;//用来保存当前进栈的值 vector max_vec;public: void push(int a) { vec.push_back(a); if(max_vec.size()==0||a>vec[max_vec[max_ve
2015-04-24 09:46:34 636
原创 编程之美中判断某个字符串是否是另一个字符串的移位结构的子串
#include#includeusing namespace std;bool is_circle(string src,string des){ if(src.empty()||des.empty()) return false; string temp=src; temp+=src; string::size_type pos=0; pos=temp.find(des)
2015-04-23 13:45:47 1308
原创 2.11寻找最近的点对 (给定一系列的点,求出距离最短的点对)
#include#include#includeusing namespace std;/*int pow(int a,int index){ int result=1; int temp=a; for(;index;index>>=1) { if(index&1) result*=temp; temp*=temp; } return result;}*/
2015-04-21 11:47:08 1470
原创 如何有效的实现一个正整数的N次方
以时间复杂度为logn来实现一个数的N次方;#includeusing namespace std;int pow(int a,int index){ int result=1; int temp=a; for(;index;index>>=1) { if(index&1) result*=temp; temp*=temp; } return result;}
2015-04-21 09:54:57 924 1
原创 寻找发帖水王(找出数组出现超过一半的数字)
#includeusing namespace std;void find(int A[],int length){int times=0;int i=0;int temp;for(;i{if(times==0){temp=A[i];times=1;}else{if(A[i]==temp)times++;elsetimes
2015-04-12 16:55:14 676
原创 2.2阶乘中末尾0的个数
#includeusing namespace std;int count(int N){ if(N==0) return 0; int num=0; for(int i=1;i<=N;++i) { int j=i; while(j%5==0) { num++; j/=5; } } return num;}int aa(int N){ i
2015-04-12 16:02:55 617
原创 用栈的知识实现四则运算(带括号的加减乘除)
#include#include#include#includeusing namespace std;void size_yunsuan(string input,string &a){ int i=0; int length=input.size(); stack stack1; while(i<length) { //cout<<input[i]<<endl;
2015-04-12 10:20:06 3431
原创 剑指offer中在一个有序数组中找出和为s的两个数字
#includeusing namespace std;bool findnumberwithsum(int A[],int length,int *num1,int *num2,int key){if(NULL==A||lengthreturn false;int start=0;int end=length-1;int sum=0;while(start
2015-04-10 09:24:10 705 1
原创 剑指offer统计字符数组中第一次出现的字符
给定一个字符串,例如“abaccdeff”则第一次出现的字符就是b;#include#includeusing namespace std;void first(const string &input){ if(input.empty()) return ; string::size_type length=input.size(); int *times=new int[l
2015-04-03 11:08:37 471
原创 剑指offer中找出出现次数超过一半的数字
#include#includeusing namespace std;bool check(int *numbers,int length,int number){ int times=0; for(int i=0;i<length;++i) { if(numbers[i]==number) times++; } bool ismorethanhalf=true;
2015-04-02 10:34:16 548
原创 华为(C++实现字符串压缩程序)
#include#includeusing namespace std;void string_zip(string input,string &output){ if(input.empty()) return ; char last='\0'; char current; int count=0; for(int i=0;i<input.size();++i) {
2015-03-28 11:02:07 1215
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人