自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(241)
  • 收藏
  • 关注

原创 MySQL开发

一.开启Debug日志MySQL提供了trace机制方便定位1.cmake时要开启编译选项-DWITH_DEBUG=1-DCMAKE_BUILD_TYPE=Debug这两个参数2.设置trace日志的路径,export MYSQL_DEBUG=d:t:O,/tmp/client.trace。如果不配置,默认保存在tmp/mysql.trace3.mysql启动的时候,需要增加--...

2020-01-03 11:25:56 576

转载 如果有人问你数据库的原理,叫他看这篇文章

一提到关系型数据库,我禁不住想:有些东西被忽视了。关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata 。但很少有文章讲解数据库是如何工作的。你可以自己谷歌/百度一下『关系型数据库原理』,看看结果多么的稀少【译者注:百度为您找到相关结果约1,850,000个…】,而且找到的那些文章都很短。现在如果你查找最近时髦的技术(大数据、NoSQL或JavaScript...

2020-04-19 23:34:23 802

原创 MySQL-Bug:InnoDB COUNT(*) 优化

https://blog.csdn.net/shaochenshuo/article/details/72475340https://github.com/mysql/mysql-server/commit/510dd48bf510dc0a3bda9e62cede698325d05fddhttps://github.com/mysql/mysql-server/commit/23dc12f...

2020-02-20 15:29:51 229

转载 windows和linux文件CRLF转换

1. CRLFCRLF -- Carriage-Return Line-Feed 回车换行。CR:回车,ASCII 13, \r,LF:换行,LF, ASCII 10, \n。windows下使用 \r\n 换行, linux使用 \n 换行。windows断行字符 ^M$, linux仅有 $如果linux下shell文件包含^M字符,则无法执行,需要去掉 \r 。2. dos...

2019-09-18 20:15:40 1145

转载 分布式一致性协议介绍(Paxos、Raft)

两阶段提交Two-phase Commit(2PC):保证一个事务跨越多个节点时保持 ACID 特性;两类节点:协调者(Coordinator)和参与者(Participants),协调者只有一个,参与者可以有多个。过程: 准备阶段:协调者询问参与者事务是否执行成功; 提交阶段:如果事务在每个参与者上都执行成功,协调者发送通知让参与者提交事务;否则,协调者发送通知让参与...

2019-09-03 17:55:19 141

转载 MySQL binlog 组提交与 XA(分布式事务、两阶段提交)【转】

概念: XA(分布式事务)规范主要定义了(全局)事务管理器(TM: Transaction Manager)和(局部)资源管理器(RM: Resource Manager)之间的接口。XA为了实现分布式事务,将事务的提交分成了两个阶段:也就是2PC (tow phase commit),XA协议就是通过将事务的提交分为两个阶段来实现分布式事务。两阶段:1)prepare 阶段...

2019-03-17 20:08:01 264

转载 mysql 5.6 binlog组提交实现原理【转载】

Redo组提交Redo提交流程大致如下lock log->mutexwrite redo log buffer to diskunlock log->mutexfsyncFsync写磁盘耗时较长且不占用log->mutex,也就是其执行期间其他线程可以write log buffer;假定一次fsync需要10ms,而写buffer只需要1ms,...

2019-03-17 20:07:18 254

转载 【转载】MYSQL-GroupCommit

组提交(group commit)是MYSQL处理日志的一种优化方式,主要为了解决写日志时频繁刷磁盘的问题。组提交伴随着MYSQL的发展不断优化,从最初只支持redo log 组提交,到目前5.6官方版本同时支持redo log 和binlog组提交。组提交的实现大大提高了mysql的事务处理性能,下文将以innodb 存储引擎为例,详细介绍组提交在各个阶段的实现原理。redo log的组提交...

2019-03-17 20:06:25 266

转载 SQL执行过程中的性能负载点【转】

一、SQL执行过程1、用户连接数据库,执行SQL语句;2、先在内存进行内存读,找到了所需数据就直接交给用户工作空间;3、内存读失败,也就说在内存中没找到支持SQL所需数据,就进行物理读,也就是到磁盘中查找;4、找到的数据放到内存中,在内存进行数据过滤再放到会话工作空间。5、假设会话工作空间需要暂存结果集进行排序,但空间不足的话,就会借用磁盘tmpdir,最后再将结果返回给用户。...

2019-03-17 20:05:03 162

转载 Nginx/LVS/HAProxy 负载均衡软件的优缺点详解

 Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的...

2018-11-01 16:52:05 177

转载 MySQL 性能优化神器 Explain 使用分析

简介MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化.EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了, 例如:EXPLAIN SELECT * from user_info WHERE id < 300;准备为了接下来方便演示 ...

2018-08-11 21:03:28 179

转载 InnoDB存储引擎

innodb存储引擎数据库和实例 数据库(database):物理操作系统文件或其他形式文件类型的集合实例(instance):mysql数据库由后台线程以及一个共享内存区组成。 通常情况下,两者是一对一关系;但是,在集群情况下可能存在一个数据库被多个数据实例使用的情况。 mysql实例在系统上的表现就是一个进程; InnoDB存储架构   innodb 在内存中的缓存池 buffer pool ...

2018-04-29 21:30:50 237

转载 MySQL 一致性读 深入研究

一致性读,又称为快照读。使用的是MVCC机制读取undo中的已经提交的数据。所以它的读取是非阻塞的。相关文档:http://dev.mysql.com/doc/refman/5.6/en/innodb-consistent-read.htmlA consistent read means that InnoDB uses multi-versioning to present to a query...

2018-04-29 20:45:11 707

转载 /etc/bashrc和/etc/profile傻傻分不清楚?

首先我们来看系统中的这些文件, 一般的系统可能会有/etc/profile/etc/bashrc~/.bashrc~/.profile而如果系统是 ubuntu 或者 debian 的话, 就不会有 /etc/bashrc 而会有 /etc/bash.bashrc 文件.以上这些就是常用 profile 和 bashrc 文件了. 要理解这些文件之前还需要了解 Shell, Shell 的...

2018-04-17 20:24:01 2363

转载 mysql timeout知多少

1.timeout变量知多少打开mysql,用show variables like '%timeout%'命令一看,不看不知道,一看吓一跳,结果如下面所示,这么多timeout相关变量,一下就吓尿了。。原来对mysql的了解原来是如此的不够,好了,这么些timeout究竟各自是什么意思,花了一下午去学习,做了几个小实验,总算明白了一二,如有错误,请不吝赐教啊。mysql> show

2017-11-20 10:32:28 342

转载 mysql错误吗

· 错误消息信息列在share/errmsg.txt文件中。“%d”和“%s”分别代表编号和字符串,显示时,它们将被消息值取代。 · 错误值列在share/errmsg.txt文件中,用于生成include/mysqld_error.h和include/mysqld_ername.h MySQL源文件中的定义。 · SQLSTATE值列在share/errmsg.txt文件

2017-11-02 14:34:59 465

转载 xtrabackup 2.4.6 的源码安装

首先解压缩源码包[root@mysqldb2 setup]# tar -zxvf percona-xtrabackup-2.4.6.tar.gz检查依赖包并安装 — 注:bzr不知道什么包。rpm -q –qf ‘%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n’ \cmake gcc gcc-c++ libaio libaio-devel a

2017-08-05 11:03:43 1082

转载 linux 错误码

errno 在 中定义,错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的  errno-base.h 和 errno.h,分别定义了 1-34 、35-132 的错误定义。strerror() 函数依据 errno 值返回错误描述字符串,下面程序打印对照表:[cpp] view plain copy#

2017-04-13 18:52:12 2634

转载 关于MySQL InnoDB存储引擎中的锁

2,INNODB_LOCKS表a)        lock_id:锁的id以及被锁住的空间id编号、页数量、行数量b)        lock_trx_id:锁的事务id。c)        lock_mode:锁的模式。d)        lock_type:锁的类型,表锁还是行锁e)        lock_table:要加锁的表。f)     

2017-04-04 20:45:25 577

转载 Linux find命令用法小结

find是个使用频率比较高的命令。常常用它在系统特定目录下,查找具有某种特征【名字类型属主权限等】的文件。find命令的格式: find  [-path ..] -options [-print -exec -ok]path:要查找的目录路径。~ 表示$HOME目录. 表示当前目录/ 表示根目录-print :表示将结果输出到标准输出-exec :对

2017-02-19 19:59:18 271

转载 show engine innodb status解读

注:以下内容为根据《高性能mysql第三版》和《mysql技术内幕innodb存储引擎》的innodb status部分的个人理解,如果有错误,还望指正!!  innodb存储引擎在show engine innodb status(老版本对应的是show innodb status)输出中,显示除了大量的内部信息,它输出就是一个单独的字符串,没有行和列,内容分为很多小段,每一段对应inn

2017-02-19 19:14:19 1491

转载 mysql show processlist命令 详解

processlist 命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令。1.        进入 mysql/bin 目录下输入 mysqladmin processlist;2.        启动 mysql ,输入 show processlist;如果有 SUPER 权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指,当

2017-02-19 18:59:20 265

转载 MySQL临时表

首先,临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。因此在不同的连接中可以创建同名的临时表,并且操作属于本连接的临时表。        创建临时表的语法与创建表语法类似,不同之处是增加关键字TEMPORARY,如:               CREATE TEMPORARY TABLE 表名 (…. )        临时表使用有一些

2017-02-19 18:58:16 319

转载 MySQL事务提交过程(二)

上一篇文章我们介绍了在关闭binlog的情况下,事务提交的大概流程。之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它称之为内部xa事务(Distributed Transactions),与之对应的还有一个外部xa事务。这里所谓的两阶段提交分别是prepare阶段和commit阶段。内部xa事务主要

2017-01-01 21:18:45 2579

转载 MySQL事务提交过程(一)

MySQL作为一种关系型数据库,已被广泛应用到互联网中的诸多项目中。今天我们来讨论下事务的提交过程。                                                       MySQL体系结构 由于mysql插件式存储架构,导致开启binlog后,事务提交实质是二阶段提交,通过两阶段提交,来保证存储引擎和二进制日志的一致。

2017-01-01 21:18:17 2899

转载 浅谈mysql的两阶段提交协议

前两天和百度的一个同学聊MySQL两阶段提交,当时自信满满的说了一堆,后来发现还是有些问题的理解还是比较模糊,可能是因为时间太久了,忘记了吧。这里再补一下:) 5.3.1事务提交流程MySQL的事务提交逻辑主要在函数ha_commit_trans中完成。事务的提交涉及到binlog及具体的存储的引擎的事务提交。所以MySQL用2PC来保证的事务的完整性。MySQL的2PC过

2017-01-01 21:16:59 1808

转载 一分钟了解两阶段提交2PC(运营MM也懂了)

上一期分享了“一分钟了解mongoDB”【回复“mongo”阅读】,本期将分享分布式事务的一种实现方式2PC。一、概念二阶段提交2PC(Two phase Commit)是指,在分布式系统里,为了保证所有节点在进行事务提交时保持一致性的一种算法。二、背景在分布式系统里,每个节点都可以知晓自己操作的成功或者失败,却无法知道其他节点操作的成功或失败。

2017-01-01 21:16:36 1369

转载 分布式事务 - 两阶段提交与三阶段提交

在分布式系统中,著有CAP理论,该理论由加州大学伯克利分校的Eric Brewer教授提出,该理论阐述了在一个分布式系统中不可能同时满足一致性(Consistency)、可用性(Availability),以及分区 容错性(Partition tolerance)。一致性在分布式系统中数据往往存在多个副本,一致性描述的是这些副本中的数据在内容和组织上的一致。可用性可用性描述了系统对

2017-01-01 21:16:16 10311 1

转载 两阶段提交协议与三阶段提交协议

在分布式系统中通常存在着多个机器节点,每个节点只能控制自己事务的成功与失败而无法获知其他节点的事务执行结果,这时当事务操作跨越多个节点时就会存在无法满足分布式系统ACID中的数据一致性(Consistency)问题,这时就需要一个协调节点了统一调到分布式系统中其他节点的事务操作。  在分布式系统中通常存在两个问题,可用性、数据一致性,通常我们会在可用性与数据一致性之间做一个衡量,在这需求中就产

2017-01-01 21:15:31 661

转载 MySQL binlog 组提交与 XA(两阶段提交)

1. XA-2PC (two phase commit, 两阶段提交 ) XA是由X/Open组织提出的分布式事务的规范(X代表transaction; A代表accordant?)。XA规范主要定义了(全局)事务管理器(TM: Transaction Manager)和(局部)资源管理器(RM: Resource Manager)之间的接口。XA为了实现分布式事务,将事务的提交分成了

2017-01-01 21:15:04 664

转载 使用getopt命令解析shell脚本的命令行选项

在之前的一篇文章中,介绍了如何利用shell内置的getopts命令来帮助我们处理shell脚本选项和参数,其缺点是只能处理短选项,无法处理长选项。下面,本文将要介绍的是getopt命令,它可以同时处理短选项和长选项。首先,getopt命令不是一个标准的unix命令,但它在大多数Linux的发行版中都自带了有,如果没有,也可以从getopt官网上下载安装。在getopt的较老版本中

2016-08-18 20:26:23 21653 1

转载 FIO磁盘性能测试

一,FIO安装wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gzyum install libaio-develtar -zxvf fio-2.0.7.tar.gzcd fio-2.0.7makemake installfio用法fio分顺序读,随机读,顺序写,随机写,混合随机读写模式。filename:

2016-07-01 10:47:29 595

转载 金融数据安全

2016-05-05 09:10:19 483

转载 mysql timeout调研与实测

mysql的timeout有多少种,之间的区别时什么?本文从实测和代码分析的角度验证了不同的超时参数的作用。接触网络编程我们不得不提的就是超时,TCP建立连接的超时,数据报文发送/接收超时等等,mysql在超时上也做足了功夫。123456Variable_name Default Valueconnect_timeout 5interactive_timeout 28800ne

2016-05-04 15:57:03 328

转载 千万级用户App小咖秀:服务端架构设计分享

摘要小咖秀的张华伟带来的分享是在移动互联网时代,创业团队在技术储备、经验积累以及资金等有限的情况下,怎样选择合适的服务端技术解决突发式流量增长所带来的压力以及最大化节省运营成本等方面的经验和建议。同时也对划分URL目录,合理使用缓存等问题给出自己独特的答案。3月18日云栖社区在线实时分享顺利结束,本次由小咖秀技术总监张华伟分享了分享是在移动互联网时代,创业团队在技术储备、经验积累以及资金等

2016-03-27 16:30:14 3540 1

转载 Linux 防火墙开放特定端口 (iptables)

iptables是linux下的防火墙,同时也是服务名称。service  iptables  status        查看防火墙状态service  iptables  start           开启防火墙service  iptables  stop           关闭防火墙service  iptables  restart    

2016-03-27 13:05:32 346

转载 linux下测试磁盘的读写IO速度

有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策.下面是两种测试方法:(1)使用hdparm命令这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的( hdparm has been writte

2016-03-24 20:18:50 573

转载 MySQL常见性能命令

版权声明:本文为博主原创文章,未经博主允许不得转载。1, 查看MySQL服务器配置信息 Java代码  mysql> show variables;  2, 查看MySQL服务器运行的各种状态值 Java代码  mysql> show global status;  3, 慢查询 J

2016-03-04 22:07:48 280

转载 MySQL数据库服务器优化详细

MySql服务器的后台管理程序,要想使用客户端程序,该程序必须运行,因为客户端通过连接服务器来访问数据库。下面让我们以服务器的系统变量和状态变量为根据,优化我们的MySql数据库服务。在这之前,我们需要掌握以下方法:查看MySql状态及变量的方法:Mysql> show status ——显示状态信息(扩展show status like 'XXX')Mys

2016-03-04 22:07:20 306

转载 innodb_flush_log_at_trx_commit

innodb_buffer_pool_size如 果用Innodb,那么这是一个重要变量。相对于MyISAM来说,Innodb对于buffer size更敏感。MySIAM可能对于大数据量使用默认的key_buffer_size也还好,但Innodb在大数据量时用默认值就感觉在爬了。 Innodb的缓冲池会缓存数据和索引,所以不需要给系统的缓存留空间,如果只用Innodb,可以把这个值设为内存

2016-03-04 22:06:34 303

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除