压缩协议属于mysql通讯协议的一部分,要启用压缩协议传输功能,前提条件客户端和服务端都必须要支持zlib算法,那么,现在有个问题,假如服务端已经默认开启压缩功能,那原生客户端在连接的时候要如何才可启用该功能呢?答案很简单只需要加上-C(注意是大写C)或者--compress=true选项即可,事情看似简单,但是背后的设计却值得大家深入挖掘,启动后到底发生什么事情了,对网络传输性能上的提升到底有什么影响呢? 趁着风和日丽的今天,正适合在西湖边上一边泡着龙井.一边听着音乐.一边晒着太阳来享受一下这…
相信大伙对mysql的load data local infile并不陌生,今天来巩固一下这里面隐藏的一些细节,对于想自己动手开发一个mysql客户端有哪些点需要注意的呢? 首先,了解一下流程: 3个点: 1.Is '<path>/<filename>' exists?对于客户端来说,在文件发送前是先检查一下文件是否存在: 2.filename前建议加上绝对路径: 3.空包,表示命令已执行完毕. 接下来,一起来学习下官方源码(版本5.5.36)是如何实现该流程?由于篇幅关系,只贴出…
1.熟悉几个组件(部分摘自网络)1.1.drbd     —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID",开源软件,由 LINBIT 公司开发.DRBD 实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中.他是有内核 模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能.也就是说当你将数据写入本地的DRBD设备上的文件系统 时, 数据会同时被发送到网…
浅谈mysql innodb缓存策略: The InnoDB Buffer Pool Innodb 持有一个存储区域叫做buffer pool是为了在内存中缓存数据和索引,知道innodb bufferpool怎么工作,和利用它读取频繁访问的数据,是mysql优化重要的方面. 理想状况下,把bufferpool的大小调整到足够大,留下足够的内存空间给其他该服务器上的进程(使其无缺页即可).bufferpool越大,innodb 月表现为内存型数据库,从硬盘上一次读取数据,之后并成了从内存中读取数…
做优化,我在这里引用淘宝系统分析师蒋江伟的一句话:只有勇于承担,才能让人有勇气,有承担自己的错误的勇气.有承担错误的勇气,就有去做事得勇气.无论做什么事,只要是对的,就要去做,勇敢去做.出了错误,承担错误,改正错误,这样的人没有人会去责怪. 很久之前就想写一篇关于mysql优化方面的文章了,忙于工作,在着也比较懒散.现在网上mysql优化方面的帖子很多,也不乏精品.很早听一DBA前辈说过:mysql的优化,三分配置的优化,七分sql语句的优化.之前不是很理解,但接触到高并发大数据的时候,这句话的…
浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有nul…
浅谈状态压缩DP 本篇随笔简单讲解一下信息学奥林匹克竞赛中的状态压缩动态规划相关知识点.在算法竞赛中,状压\(DP\)是非常常见的动规类型.不仅如此,不仅是状压\(DP\),状压还是很多其他题目的处理技巧.所以掌握状压.掌握状压DP是十分重要的. 注:虽然自己写的也是状压DP的讲解.但还是凭良心推荐机房大佬@littleseven的状压博客,讲的真的是太详细了.强烈推荐! 链接Link: 浅谈状压DP 状态压缩的概念 来看一个问题. 相信大家都做过动态规划的背包问题,那么我们再来看一个跟背包很像…
浅谈Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景   Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁(抽象性,不真实存在这个锁) |--乐观锁(抽象性,不真实存在这个锁) 二.InnoDB与MyISAM Mysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB…
在网络上,交互的双方基于TCP或UDP进行通信,通信协议的格式通常分为两类:文本消息.二进制消息. 文本协议相对简单,通常使用一个特殊的标记符作为一个消息的结束. 二进制协议,通常是由消息头(Header)和消息体(Body)构成的,消息头的长度固定,而且,通过解析消息头,可以知道消息体的长度.如此,我们便可以从网络流中解析出一个个完整的二进制消息. 两种类型的协议格式各有优劣:文本协议直观.容易理解,但是在文本消息中很难嵌入二进制数据,比如嵌入一张图片:而二进制协议的优缺点刚刚相反. 在 轻量…
前段时间,有几个研究ESFramework通信框架的朋友对我说,ESFramework有点庞大,对于他们目前的项目来说有点“杀鸡用牛刀”的意思,因为他们的项目不需要文件传送.不需要P2P.不存在好友关系.也不存在组广播.不需要服务器均衡.不需要跨服务器通信.甚至都不需要使用UserID,只要客户端能与服务端进行简单的稳定高效的通信就可以了.于是,他们建议我,整一个轻量级的C#通讯组件来满足类似他们这种项目的需求.我觉得这个建议是有道理的,于是,花了几天时间,我将ESFramework的内核抽离出…