- 博客(47)
- 资源 (3)
- 收藏
- 关注
原创 Undo 日志用什么存储结构支持无锁并发写入?
undo 日志承担着多重职责,需要为 MVCC 和数据一致性服务。相比于 redo 日志,它拥有更复杂的存储结构,和事务有更多的关联。本文从存储结构、写入 undo 日志文件、二阶段提交三个方面介绍了 undo 日志。...
2022-07-06 12:44:59
565
1
原创 Redo 日志无锁化设计并发写入 log buffer
MySQL 8.0 中,多个线程往 log buffer 中写入 Redo 日志,使用了无锁化设计实现并行写入,并且 log buffer 中的日志写入日志文件、刷盘都使用了独立线程,结构复杂了很多,负载比较高的情况下写入效率也大大提升了。.........
2022-06-13 14:14:07
784
原创 MySQL 查询语句是怎么执行的(总结篇)?
查询语句执行过程涉及的环节比较多,整个执行过程拆分为 6 篇进行介绍,本文对查询语句执行过程各阶段进行概括性总结,方便大家对执行过程有个整体的了解。
2022-03-07 16:30:06
735
原创 聊聊 MySQL 网络缓冲区、net_buffer_length、max_allowed_packet 那些事
本文主要介绍了连接缓冲区、结果集缓冲区,它们的自动增长逻辑和上下限。以及超过 16M 的大数据怎么发送和接收,net_buffer_length、max_allowed_packet 两个系统变量的配置。
2022-03-07 13:24:29
4946
2
原创 MySQL 简单查询语句执行过程分析(五)发送数据给客户端
查询语句执行过程分析第 5 篇,讲述发送字段元数据和数据记录给客户端时,会发送字段的那些元数据信息,以及各种类型的字段在发送之前会做哪些处理。
2022-03-04 19:29:09
562
原创 MySQL 简单查询语句执行过程分析(四)WHERE 条件
查询语句执行过程分析的第 4 篇,主要讲述源码中 where 条件的结构,where 条件的比较过程,以及 enum、set、bit 三种类型的字段作为 where 条件是怎么比较的,内含多图[呲牙]
2022-03-04 19:27:01
1755
原创 MySQL 简单查询语句执行过程分析(三)从存储引擎读数据
本文是查询语句执行过程分析的第 3 篇,主要讲述 MySQL 从 InnoDB 读取数据的过程中,涉及到的那些操作。
2022-03-04 19:25:41
552
原创 MySQL 简单查询语句执行过程分析(二)查询准备阶段
本文是查询语句分析文章的第 2 篇,主要讲述一条简单查询语句,在查询准备阶段会干哪些事情?
2022-03-01 19:46:26
239
原创 MySQL 简单查询语句执行过程分析(一)词法分析 & 语法分析
本文对一条简单的 SELECT 语句执行过程中的词法分析 & 语法分析阶段的过程进行分析。
2022-02-28 18:58:26
1698
1
原创 MySQL 查询语句的 limit, offset 是怎么实现的?
本文主要介绍 select 语句中 limit, offset 的实现,以及顺便写了点使用 limit 的最佳实践。
2022-02-26 12:27:37
1975
1
原创 MySQL subquery、dependent subquery、uncacheable subquery 是怎么执行的?
前几天在看官方文档的时候,看到关于 dependent subquery 和 uncacheable subquery 的一句说明,被搞的神魂颠倒的,各种百度、谷歌也没有找到能够解释清楚这句话是什么意思的,去折腾了几天 5.7.35 版本的源码,对于 subquery、dependent subquery、uncacheable subquery 的执行过程,多了一些了解。
2022-02-26 12:23:12
1743
转载 半连接物化的两种策略
IN、=ANY 子查询进行半连接(Semi-Join)优化时,其中一种策略就是`子查询物化`,即生成一张内存或者磁盘的临时表(称为`物化表`),来存储子查询的执行结果,然后`物化表`和`主查询`进行连接,以获取最终的结果集
2022-02-17 15:40:10
632
原创 MySQL 数据在连接缓冲区是怎么存储的?
MySQL 连接缓冲区(Join Buffer)是用于提升多表连接查询的速度的,连接查询的执行简化逻辑如下:从存储引擎中读取驱动表的中的记录,把满足条件的记录存入连接缓冲区当连接缓冲区满时,循环从存储引擎读取被驱动表的记录每读取一条被驱动表的记录,遍历临时存放到连接缓冲区中的驱动表的记录判断被驱动表和驱动表的记录是否匹配,如果匹配,且被驱动表是连接操作的最后一个表,则把匹配的记录发送给客户端(只发送客户端需要的字段)
2022-02-17 15:29:45
1027
原创 CentOS 7.2.1511 gdb调试报错:Missing separate debuginfos
CentOS 7.2.1511 gdb调试php-7.1.0源码报错:Missing separate debuginfos, use: debuginfo-install glibc-2.17-157.el7_3.5.x86_64 libxml2-2.9.1-6.el7_2.3.x86_64 nss-softokn-freebl-3.36.0-5.el7_5.x86_64 xz-libs-5.2...
2019-08-04 17:40:49
439
原创 记录给nginx增加模块过程中碰到的问题
nginx 增加 nginx-mogilefs时报了个perl相关的错误:Can't locate ExtUtils/Embed.pm in @INC解决方案:yum install perl-ExtUtils-Embed
2015-10-27 20:25:37
464
原创 记录使用了jquery uploadify flash版插件的页面在chrome浏览器崩溃问题的解决方法
在页面上使用了jquery uploadify flash版上传插件,在chrome里页面频繁崩溃,经过一翻折腾,找到问题原因:flash插件冲突,chrome浏览器自带了一个flash插件,可能访问其它网页的时候还安装了一个flash插件,导致有使用了flash的页面上这两个插件发生冲突导致页面崩溃。解决方法就是禁用掉其中一个,先禁用了安装的flash插件发现还是崩溃,然后改为禁用浏览器自带的插
2015-06-24 10:23:55
5316
转载 [转载]解决Eclipse中SVN图标不显示的问题
转自:http://blog.sina.com.cn/s/blog_541086000100wkri.htmljava >Eclipse,svn】解决Eclipse中SVN图标不显示的问题 在用Eclipse做开发的时候,用到了svn版本控制器,这天当我打开Eclipse的时候,发现项目里面的所有文件前的版本号以及状态图标都不显示了,即所有的svn图标不显示了,这是怎么回事,关掉E
2013-12-19 11:44:17
658
转载 [转载]windows7下Eclipse设置Courier New字体
转自:http://www.2cto.com/kf/201212/176505.html今天把之前的eclipse 3.X升级了下换成了4.2的版本,于是乎又要配置一番结果发现window7下依然不能设置字体为Courier New字体。我想做开发的同学对这个字体应该很熟悉把,写代码看着舒服,之前的3.2版本解决方法是改eclipse里面的一个jar包。具体那个还给忘记了。所以想想li
2013-12-16 10:17:40
630
原创 echo, print, print_r, var_dump, var_export比较
1、echoecho是语法结构, 无返回值输出一个或多个标量变量的值打印单个变量时可以使用括号, 如echo ('a')打印多个变量时不能使用括号, 多个变量之间用逗号隔开, 如 echo $a, $b;2、printprint也是语法结构, 但是有返
2011-08-26 12:21:22
1147
原创 php生成的csv, 无法完整显示带前导0的数字
php生成csv文件时,如果数字的第一位为0的话,显示时则不会显示第一个0可以在php中做特殊处理,使得生成的csv在显示时能显示出第一个0有两种方法可以实现:1、给数字加上引号,并且在引号前面再加上个等号,如数字0555,,则生成时为="0555"2、在数字前面
2011-08-25 15:26:55
3279
1
原创 php stream上下文选项
PHP Stream上下文选项1、 http, https名称用法默认值methodGET、POST 或任何其它被远程服务器支持的 HTTP 方式。GETheader
2011-08-23 12:08:12
680
原创 svn报目录 under control错误
之前把一个别的项目里的sinaweibo目录拷贝到另一个项目的openapi下面,后来把这个目录的名字改成了sina_micro_blog改完之后整个项目就没法用svn了,update, commit, cleanup都用不了了,都报 sinaweibo under cont
2011-08-18 16:39:25
467
原创 fscanf函数使用方法
fscan()函数用于从文件中格式化输入, 把获取到的每一行用空白符分隔(任何空白符,如\t, \n, \r, \f, \v等)成数组,并且返回,如:文件t1.txt的内容为:renren kaixin qq sina,sohu代码:$fp = fope
2011-08-16 17:44:31
1628
原创 basename处理包含中文的路径问题
windows风格的路径中, basename处理的时候,如果文件的父目录的最后一个字为中文,返回该路径的时候会有问题,如:echo dirname('e:\test\csch\a测试\o.php'); 会输出e:\test\csch而linux风格的路径则不会有问题,如
2011-08-15 22:52:29
1977
原创 访问zendframe work找不到模板文件
使用smarty作为显示层,包含system,manager两个模块,访问http://zf.micat.com/manager/group/show时报Warning: Smarty error: unable to read resource: "error/error.html" in E:/workspace/zf_manager/library/Smarty/Smarty.cla
2011-06-16 18:44:00
705
原创 IE浏览器中获取不到ZendFrame Work响应的Cookie头信息
使用ZendFrame Work框架,服务端响应信息中的Set-Cookie头信息,在IE中竟然获取不到,但是在火狐下却能获取到。找了半天原因没找出来,最后改了下域名,竟然就可以了,IE中这么诡异的问题。。。。
2011-06-15 12:16:00
807
原创 ZendFrame Work模块、控制器设置方法(版本1.11.5)
<br />记录下来以备以后查看<br /><br />项目目录布局如下:<br />/<br /> |- application<br /> |- configs<br /> |- modules<br /> |- csch<br /> |- controllers<br /> |- models<br /> |- views<br /> |- default<br /> |- controllers<br /> |- models<br /> |- vie
2011-05-27 11:26:00
1334
原创 Zend_Session及Zend_Session_Namespace
Zend_Session类用于对会话本身进行管理,包括会话的开始、销毁、会话的配置选项等。Zend_Session_Namespace类用于对会话数据进行管理,包括会话数据的添加、删除、获取、锁定、解锁等。
2011-05-15 14:32:00
2162
原创 php curl上传图片时Content-Type错误问题
Redhat 6 + Nginx +PHP环境,用PHP CURL上传图片到开心网,图片的MIME类型错误,如下:------------------------------bcf414c27670Content-Disposition: form-data; name="file1"; filename="/tmp/dog.jpg"Content-Type: application/octet-streamContent-Type不是image/jpeg导致上传失败。通过在文件名后面加上";type=im
2011-05-13 14:43:00
6276
原创 eclipse php explorer不能列出PHP文件中的类、属性、方法
<br />使用zf.bat create project f:/workspace/zf新建一个项目,完成后需要把zendframe work的library目录下的Zend目录拷贝到zf下的library目录,拷贝过来后发现从PHP Exploerer中查看该目录下的php文件,都未能列表文件中的类、属性、方法,对于查看类中的代码十分不便,经查后发现,由于zf下的library之前是空目录,在新建项目时未被加入PHP Build Path,所以才出现此问题。在项目上右键->properties,弹出窗口
2011-04-24 22:02:00
1787
原创 svn copy
<br />svn copy trunk branches/test<br />拷贝主干trunk到分支test, 如果test存在,则把trunk拷贝到test目录下,形成的路径为branches/test/trunk<br />如果test不存在,则把trunk拷贝到branches目录,形成的路径为branches/test
2011-01-05 13:54:00
820
原创 isset()与array_key_exists()
判断一个数组单元中是否存在与指定键名对应的单元,可以通过isset()和array_key_exists()进行判断。一般情况下,两种方式返回相同的结果。但是当指定键的值为NULL时,用isset()会返回false, 而array_key_exists()返回true[来自手册, 记录备忘,]
2010-11-17 12:17:00
578
原创 MySQL的char和varchar比较
1、char类型的列占用固定字节,为创建列时指定的字节,如果插入的值小于指定字节,则在尾部填充空格2、varchar类型的列只占用实际存储内容的字节数,另外会有1个字节或两个字节的前缀,用于指定保存内容的实际长度(前缀长度取定义的字段长度,当定义长度大于255字节时,前缀长度为2字节)3、char类型的列在检索时会去年尾部空格4、varchar类型的列在检索时不会去年尾部空格,遵循SQL标准
2010-11-16 16:17:00
610
原创 MySQL的DATETIME, TIMESTAMP类型列的默认值
创建MySQL表时,如果要给DATETIME, TIMESTAMP类型的列指定插入记录的时间作为默认值的话,可以使用CURRENT_TIMESTAMP,如CREATE TABLE t_01 ( `id` INT NOT NULL AUTO_INCREMENT, `dt` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, primary key (`id`)) engine = MyISAM default character set utf8;也可以指定在更新记录的
2010-11-16 15:31:00
1408
原创 关于php在windows及linux下的操作
1、windows下, 使用unlink()删除文件时, 如果要删除的文件正在被读取或者写入, 会报Permission denied的Warning错误2、使用while (!feof($fp)) {}判断文件指针是否到达结束位置时, 如果$fp不是有效的文件句柄, 则程序会进入死循环. 如以下代码在执行过程中, ta.txt被其它程序删除, 程序会进入死循环: $fp = fopen('ta.txt', 'r'); $buffer = ''; while (!feof($fp)) { $buffer
2010-11-10 12:21:00
763
原创 apache配置WebDAV
在httpd.conf中添加已下配置信息:;WebDAV锁数据库文件的路径;如果路径设置不正确,则无法进行文件的创建、修改、删除等操作;需要把dir_dav_lock目录的属主及组设置为运行Apache的用户(如Daemon), 因为Apache会在该目录下建立所需文件, 所以必须有写权限;davlock为文件, Apache会在dir_dav_lock目录以davlock为名称建立两个不同扩展名的文件:davlock.dir、davlock.pagDavLockDB /usr/local/apache2/
2010-11-04 13:38:00
1910
原创 使用apache的mod_disk_cache做缓存,不能缓存开启了session的php页面
在使用mod_disk_cache做页面缓存时,发现有些php无法缓存,在每次访问页面的时候,http响应头里都会返回以下行项头信息Expires: Thu, 19 Nov 1981 08:52:00 GMTCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0Pragma: no-cache通过在apache及php的源代码查找,最后在php源代码目录下的ext/session/session.c中发现了以
2010-10-28 16:30:00
3813
原创 svn + apache配置
<br />1、把SVN的bin目录下的mod_dav_svn.so、mod_authz_svn.so拷到apache的modules目录下<br />2、使用LoadModule加载mod_dav.so、mod_dav_svn.so、mod_authz_svn.so<br /> LoadModule dav_module modules/mod_dav.so<br /> LoadModule dav_svn_module modules/mod_dav_svn.so<br /> LoadModule au
2010-10-01 18:00:00
912
原创 samba client操作
<br />samba client 查看指定IP共享的目录<br />smbclient -L <IP地址> -U <IP地址对应用户名>%<密码><br /><br />samba client 打开指定IP的共享目录<br />smbclient //<IP地址>/<共享目录> -o username=<IP地址对应用户名>%<密码><br />注:打开共享目录后,操作命令同ftp<br /><br />mount挂载指定IP的共享目录<br />mount -t cifs /
2010-09-11 22:54:00
1000
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人