<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sofia1217的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sofia1217</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sofia1217]]></copyright><item><title><![CDATA[如果有人问你数据库的原理，叫他看这篇文章]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/105625173</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/105625173</guid><author>sofia1217</author><pubDate>Sun, 19 Apr 2020 23:34:23 +0800</pubDate><description><![CDATA[一提到关系型数据库，我禁不住想：有些东西被忽视了。关系型数据库无处不在，而且种类繁多，从小巧实用的 SQLite 到强大的 Teradata 。但很少有文章讲解数据库是如何工作的。你可以自己谷歌/百度一下『关系型数据库原理』，看看结果多么的稀少【译者注：百度为您找到相关结果约1,850,000个…】，而且找到的那些文章都很短。现在如果你查找最近时髦的技术（大数据、NoSQL或JavaScript...]]></description><category></category></item><item><title><![CDATA[MySQL-Bug：InnoDB COUNT(*) 优化]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/104411597</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/104411597</guid><author>sofia1217</author><pubDate>Thu, 20 Feb 2020 15:29:51 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/shaochenshuo/article/details/72475340

https://github.com/mysql/mysql-server/commit/510dd48bf510dc0a3bda9e62cede698325d05fdd

https://github.com/mysql/mysql-server/commit/23dc12f...]]></description><category></category></item><item><title><![CDATA[MySQL开发]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/103816144</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/103816144</guid><author>sofia1217</author><pubDate>Fri, 03 Jan 2020 11:25:56 +0800</pubDate><description><![CDATA[一.开启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.trace

3.mysql启动的时候，需要增加--...]]></description><category></category></item><item><title><![CDATA[windows和linux文件CRLF转换]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/100996490</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/100996490</guid><author>sofia1217</author><pubDate>Wed, 18 Sep 2019 20:15:40 +0800</pubDate><description><![CDATA[1. CRLF

CRLF -- 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...]]></description><category></category></item><item><title><![CDATA[分布式一致性协议介绍（Paxos、Raft）]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/100524112</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/100524112</guid><author>sofia1217</author><pubDate>Tue, 03 Sep 2019 17:55:19 +0800</pubDate><description><![CDATA[两阶段提交

Two-phase Commit（2PC）：保证一个事务跨越多个节点时保持 ACID 特性；

两类节点：协调者（Coordinator）和参与者（Participants），协调者只有一个，参与者可以有多个。

过程：


	准备阶段：协调者询问参与者事务是否执行成功；
	
	
	提交阶段：如果事务在每个参与者上都执行成功，协调者发送通知让参与者提交事务；否则，协调者发送通知让参与...]]></description><category></category></item><item><title><![CDATA[MySQL binlog 组提交与 XA(分布式事务、两阶段提交)【转】]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/88625453</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/88625453</guid><author>sofia1217</author><pubDate>Sun, 17 Mar 2019 20:08:01 +0800</pubDate><description><![CDATA[概念：

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

两阶段：

1）prepare 阶段...]]></description><category></category></item><item><title><![CDATA[mysql 5.6 binlog组提交实现原理【转载】]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/88625444</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/88625444</guid><author>sofia1217</author><pubDate>Sun, 17 Mar 2019 20:07:18 +0800</pubDate><description><![CDATA[Redo组提交

Redo提交流程大致如下

lock log-&amp;gt;mutex

write redo log buffer to disk

unlock log-&amp;gt;mutex

fsync



Fsync写磁盘耗时较长且不占用log-&amp;gt;mutex，也就是其执行期间其他线程可以write log buffer；

假定一次fsync需要10ms，而写buffer只需要1ms，...]]></description><category></category></item><item><title><![CDATA[【转载】MYSQL-GroupCommit]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/88625429</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/88625429</guid><author>sofia1217</author><pubDate>Sun, 17 Mar 2019 20:06:25 +0800</pubDate><description><![CDATA[组提交(group commit)是MYSQL处理日志的一种优化方式，主要为了解决写日志时频繁刷磁盘的问题。组提交伴随着MYSQL的发展不断优化，从最初只支持redo log 组提交，到目前5.6官方版本同时支持redo log 和binlog组提交。组提交的实现大大提高了mysql的事务处理性能，下文将以innodb 存储引擎为例，详细介绍组提交在各个阶段的实现原理。

redo log的组提交...]]></description><category></category></item><item><title><![CDATA[SQL执行过程中的性能负载点【转】]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/88625404</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/88625404</guid><author>sofia1217</author><pubDate>Sun, 17 Mar 2019 20:05:03 +0800</pubDate><description><![CDATA[一、SQL执行过程

1、用户连接数据库，执行SQL语句；

2、先在内存进行内存读，找到了所需数据就直接交给用户工作空间；

3、内存读失败，也就说在内存中没找到支持SQL所需数据，就进行物理读，也就是到磁盘中查找；

4、找到的数据放到内存中，在内存进行数据过滤再放到会话工作空间。

5、假设会话工作空间需要暂存结果集进行排序，但空间不足的话，就会借用磁盘tmpdir，最后再将结果返回给用户。...]]></description><category></category></item><item><title><![CDATA[Nginx/LVS/HAProxy 负载均衡软件的优缺点详解]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/83623186</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/83623186</guid><author>sofia1217</author><pubDate>Thu, 01 Nov 2018 16:52:05 +0800</pubDate><description><![CDATA[ 

Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件，本人都在多个项目中实施过，参考了一些资料，结合自己的一些使用经验，总结一下。



一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析，如果是中小型的Web应用，比如日PV小于1000万，用Nginx就完全可以了；如果机器不少，可以用DNS轮询，LVS所耗费的机器还是比较多的...]]></description><category></category></item><item><title><![CDATA[MySQL 性能优化神器 Explain 使用分析]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/81591021</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/81591021</guid><author>sofia1217</author><pubDate>Sat, 11 Aug 2018 21:03:28 +0800</pubDate><description><![CDATA[简介

MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化.
EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了, 例如:


EXPLAIN SELECT * from user_info WHERE id &amp;lt; 300;

准备

为了接下来方便演示 ...]]></description><category></category></item><item><title><![CDATA[InnoDB存储引擎]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/80145677</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/80145677</guid><author>sofia1217</author><pubDate>Sun, 29 Apr 2018 21:30:50 +0800</pubDate><description><![CDATA[innodb存储引擎数据库和实例 数据库(database):物理操作系统文件或其他形式文件类型的集合实例(instance):mysql数据库由后台线程以及一个共享内存区组成。 通常情况下，两者是一对一关系；但是，在集群情况下可能存在一个数据库被多个数据实例使用的情况。 mysql实例在系统上的表现就是一个进程； InnoDB存储架构   innodb 在内存中的缓存池 buffer pool ...]]></description><category></category></item><item><title><![CDATA[MySQL 一致性读 深入研究]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/80145349</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/80145349</guid><author>sofia1217</author><pubDate>Sun, 29 Apr 2018 20:45:11 +0800</pubDate><description><![CDATA[一致性读，又称为快照读。使用的是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...]]></description><category></category></item><item><title><![CDATA[/etc/bashrc和/etc/profile傻傻分不清楚？]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/79961730</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/79961730</guid><author>sofia1217</author><pubDate>Tue, 17 Apr 2018 20:24:01 +0800</pubDate><description><![CDATA[首先我们来看系统中的这些文件, 一般的系统可能会有/etc/profile
/etc/bashrc

~/.bashrc
~/.profile而如果系统是 ubuntu 或者 debian 的话, 就不会有 /etc/bashrc 而会有 /etc/bash.bashrc 文件.以上这些就是常用 profile 和 bashrc 文件了. 要理解这些文件之前还需要了解 Shell, Shell 的...]]></description><category></category></item><item><title><![CDATA[mysql timeout知多少]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/78579854</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/78579854</guid><author>sofia1217</author><pubDate>Mon, 20 Nov 2017 10:32:28 +0800</pubDate><description><![CDATA[1.timeout变量知多少

打开mysql，用show variables like '%timeout%'命令一看，不看不知道，一看吓一跳，结果如下面所示，这么多timeout相关变量，一下就吓尿了。。原来对mysql的了解原来是如此的不够，好了，这么些timeout究竟各自是什么意思，花了一下午去学习，做了几个小实验，总算明白了一二，如有错误，请不吝赐教啊。
mysql> show ]]></description><category></category></item><item><title><![CDATA[mysql错误吗]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/78424672</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/78424672</guid><author>sofia1217</author><pubDate>Thu, 02 Nov 2017 14:34:59 +0800</pubDate><description><![CDATA[· 错误消息信息列在share/errmsg.txt文件中。“%d”和“%s”分别代表编号和字符串，显示时，它们将被消息值取代。 


· 错误值列在share/errmsg.txt文件中，用于生成include/mysqld_error.h和include/mysqld_ername.h MySQL源文件中的定义。 


· SQLSTATE值列在share/errmsg.txt文件]]></description><category></category></item><item><title><![CDATA[xtrabackup 2.4.6 的源码安装]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/76710927</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/76710927</guid><author>sofia1217</author><pubDate>Sat, 05 Aug 2017 11:03:43 +0800</pubDate><description><![CDATA[首先解压缩源码包
[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]]></description><category></category></item><item><title><![CDATA[linux 错误码]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/70160953</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/70160953</guid><author>sofia1217</author><pubDate>Thu, 13 Apr 2017 18:52:12 +0800</pubDate><description><![CDATA[errno 在  中定义，错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的  errno-base.h 和 errno.h，分别定义了 1-34 、35-132 的错误定义。
strerror() 函数依据 errno 值返回错误描述字符串，下面程序打印对照表：




[cpp] view
 plain copy






#]]></description><category></category></item><item><title><![CDATA[关于MySQL InnoDB存储引擎中的锁]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/69201622</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/69201622</guid><author>sofia1217</author><pubDate>Tue, 04 Apr 2017 20:45:25 +0800</pubDate><description><![CDATA[2，INNODB_LOCKS表

a)        lock_id：锁的id以及被锁住的空间id编号、页数量、行数量

b)        lock_trx_id：锁的事务id。

c)        lock_mode：锁的模式。

d)        lock_type：锁的类型，表锁还是行锁

e)        lock_table：要加锁的表。

f)     ]]></description><category></category></item><item><title><![CDATA[Linux find命令用法小结]]></title><link>https://blog.youkuaiyun.com/sofia1217/article/details/55807997</link><guid>https://blog.youkuaiyun.com/sofia1217/article/details/55807997</guid><author>sofia1217</author><pubDate>Sun, 19 Feb 2017 19:59:18 +0800</pubDate><description><![CDATA[find是个使用频率比较高的命令。常常用它在系统特定目录下，查找具有某种特征【名字类型属主权限等】的文件。
find命令的格式： find  [-path ..] -options [-print -exec -ok]

path：要查找的目录路径。


~ 表示$HOME目录
. 表示当前目录
/ 表示根目录


-print ：表示将结果输出到标准输出
-exec ：对]]></description><category></category></item></channel></rss>