分类:数据库

Mysql批量插入分析

前言 最近发现几个项目中都有批次插入数据库的功能,每个项目中批次插入的写法有一些差别,所以本文打算对Mysql的批次插入做一个详细的分析。 准备 1.jdk1.7,mysql5.6.38 2.准备库和表 测试与分析 下面准备几种插入的方式来分析优劣: 1.Statement插入方式 准备数据,然后通过Statement方式插入数据,插入10000条数据大概在6秒多左右,同时可以监控服务器数据包; 监控命令: 日志如下: 以上截取了其中一条插入语句的数据包日志,详细的数据包可以通过如下命令监控: 详细日志: 可以发现每个sql语句包前面都有一个select.@@session.tx_read_o…

阅读全文 »

Demo之Mycat读写分离

前言 数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能;对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,其中包含两个步骤,其一是数据源的主从同步,其二是sql的读写分发;而Mycat不负责任何数据的同步,具体的数据同步还是依赖Mysql数据库自身的功能。 Mysql主从复制 准备两台主机,安装相同版本的Mysql数据库,下面准备配置Mysql的主从复制配置: 1.配置Master 配置my.ini或者my.conf如下: server-id:一般设置为IP,注意要唯一;binlog_format:设置binlog的格式;…

阅读全文 »

Demo入门Mycat

前言 Mycat是一个开源的分布式数据库系统,是一个实现了MySQL协议的的Server,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生(Native)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里; 下面将从Mycat提供的demo来简单分析一下: 准备 1.Jdk1.7.0_80 2.Mysql 5.5 3.Mycat-server-1.6-release http://dl.mycat.io/1.6-…

阅读全文 »

基于Netty模拟解析Binlog

系列文章 MySql Binlog初识 MySql Binlog事件介绍篇 MySql Binlog事件数据篇 Mysql通讯协议分析 基于Netty模拟解析binlog 前言 最近一段时间一直再看mysql binlog相关的内容,也整理了几篇相关的文章,对mysql的事件以及通讯协议在理论上有了一个大概的了解,但是缺少实战;本文的目的就是从实战出发,了解binlog解析的整个过程。 解析思路 把binlog的解析过程大致分为以下几个步骤: 1.服务器启动首先获取上一次解析成功的位置(实例中存储在本地文件中); 2.和mysql服务器建立连接; 3.接受mysql发送来的binlog事件; …

阅读全文 »

Mysql通讯协议分析

1.Mysql的连接方式 要了解Mysql的通讯协议,首先需要知道是以哪种连接方式去连接Mysql服务器的;Mysql的主要连接方式包括:Unix套接字,内存共享,命名管道,TCP/IP套接字等。 1.1Unix套接字 在Linux和Unix环境下,可以使用Unix套接字进行Mysql服务器的连接;Unix套接字其实不是一个网络协议,只能在客户端和Mysql服务器在同一台电脑上才可以使用,使用方式也很简单: 以上命令查询Unix套接字文件的位置; 1.2命名管道和内存共享 在window系统中客户端和Mysql服务器在同一台电脑上,可以使用命名管道和共享内存的方式, 命名管道开启:&#8211…

阅读全文 »

MySql Binlog事件数据篇

前言 前两篇文章MySql Binlog初识和MySql Binlog事件介绍篇分别从Binlog入门和Binlog事件如何产生的两个角度来介绍Binlog,本文将从Binlog事件的数据来更深入的了解Binlog。 Binlog事件数据 1.QUERY_EVENT 执行更新语句时会生成此事件,包括:create,insert,update,delete; Fixed data part,总长度13字节: 4字节:执行sql的线程id; 4字节:执行sql的时间; 1字节:数据库名称的长度; 2字节:执行sql产生的错误码; 2字节:状态变量的长度,具体内容在Variable part; Va…

阅读全文 »

MySql Binlog事件介绍篇

前言 上一篇文件MySql Binlog初识,对Binlog的参数,格式以及个别事件做了详细介绍,但是Binlog事件数量比较多,上篇文章中没有对所有事件进行介绍;本文将对Binlog的事件进行简单说明,必要的时候通过SQL触发相关的事件,以下基于Mysql5.5,5.0以前的版本不考虑。 Binlog事件 1.UNKNOWN_EVENT 此事件从不会被触发,也不会被写入binlog中;发生在当读取binlog时,不能被识别其他任何事件,那被视为UNKNOWN_EVENT。 2.START_EVENT_V3 每个binlog文件开始的时候写入的事件,此事件被用在MySQL3.23 &#8211…

阅读全文 »

MySql Binlog初识

Mysql日志 MySQL 的日志包括错误日志(ErrorLog),更新日志(Update Log),二进制日志(Binlog),查询日志(Query Log),慢查询日志(Slow Query Log)等; 更新日志是老版本的MySQL 才有的,目前已经被二进制日志替代;在默认情况下,系统仅仅打开错误日志,关闭了其他所有日志,以达到尽可能减少IO损耗提高系统, 性能的目的,但是在一般稍微重要一点的实际应用场景中,都至少需要打开二进制日志,因为这是MySQL很多存储引擎进行增量备份的基础,也是MySQL实现复制的基本条件; 下面介绍的就是二进制日志–Binlog。 Binlog开启…

阅读全文 »