代码改变世界

浅谈MySQL load data local infile细节 -- 从源码层面

2014-03-23 21:01 by lispking, 1176 阅读, 收藏, 编辑
摘要: 相信大伙对mysql的load data local infile并不陌生,今天来巩固一下这里面隐藏的一些细节,对于想自己动手开发一个mysql客户端有哪些点需要注意的呢?首先,了解一下流程:3个点:1、Is '/' exists?对于客户端来说,在文件发送前是先检查一下文件是否存在;2、filename前建议加上绝对路径;3、空包,表示命令已执行完毕。接下来,一起来学习下官方源码(版本5.5.36)是如何实现该流程?由于篇幅关系,只贴出关键部分,其他读者自行查阅源码。首先,看看客户端的核心实现,源码在libmysql\libmysql.c的handle_local_infil阅读全文

浅谈MySQL Capabilities --从调研PHP mysqlnd源码细节角度认识

2014-03-17 20:51 by lispking, 586 阅读, 收藏, 编辑
摘要: 今天一起来研究下MySQL Capabilities,这个非常重要,如果大家有想法自己动手实现一个MySQL客户端或者Proxy工具,那么就得先了解一下这块,正好PHP 5.3以上版本由于官方为了规避许可协议和版权的问题而开发mysqlnd驱动(mysql native driver),而且据资料显示其性能比libmysql驱动要高不少,直接步入正题,在开始前,说明一下,以下的源码部分是来源于php 5.5.10版本。假如有这么一个场景:运维A:老大,最近调研发现php 5.5版本性能提升了不少,咱们的游戏web后台php版本要不要来一下?老大:新版本有啥优势啊?运维A:新增了mysqlnd这阅读全文

浅谈MySQL压缩协议细节--从源码层面

2014-03-16 22:34 by lispking, 1593 阅读, 收藏, 编辑
摘要: 压缩协议属于mysql通讯协议的一部分,要启用压缩协议传输功能,前提条件客户端和服务端都必须要支持zlib算法,那么,现在有个问题,假如服务端已经默认开启压缩功能,那原生客户端在连接的时候要如何才可启用该功能呢?答案很简单只需要加上-C(注意是大写C)或者--compress=true选项即可,事情看似简单,但是背后的设计却值得大家深入挖掘,启动后到底发生什么事情了,对网络传输性能上的提升到底有什么影响呢? 趁着风和日丽的今天,正适合在西湖边上一边泡着龙井、一边听着音乐、一边晒着太阳来享受一下这里面的真相,好,废话不多说,咱们开始吧。 首先,当客户端加上-C时,就会在Capabi...阅读全文