来自淘宝的分布式数据层-TDDL

​ 淘宝根据自身业务需求研发了TDDL(Taobao Distributed Data Layer)框架,主要用于解决分库分表场景下的访问路由(持久层与数据访问层的配合)以及异构数据库之间的数据同步,它是一个基于集中式配置的JDBC DataSource实现,具有分库分表、Master/Salve、动态数据源配置等功能。 就目前而言,许多大厂也在出一些更加优秀和社区支持更广泛的DAL层产品,比如Hibernate Shards、Ibatis-Sharding等。TDDL位于数据库和持久层之间,它直接与数据库建立交道,如图所示: ​ 淘宝很早就对数据进行过分库的处理,上层系统连接多个数据库,中间有一个叫做DBRoute的路由来对数据进行统一访问。 »

MySQL的执行计划与代价模型详细解析

背景 为了后续的沟通方便,在20200213的早上创建了一个《简栈-Java技术交流群》,也方便大家通过扫二维码积极的参与进来。 如果是二维码已经过期,大家可以添加简栈文化-小助手的微信号(lastpass4u),然后让他拉大家进群进群。我们保持着小而美的精神,宁缺毋滥。 然后早上群里就有人提了一个问题: 执行计划里面的扫描函数跟执行时间不匹配,比如查询优化器发现,扫描a索引行数更多,所以更慢,因此优化器选择了索引b, 但实际上走b索引的时候比a更慢,走a索引大概是4秒左右,b是8秒。 这个问题激发起了大家的讨论,有的人建议说: 1、这种可以强制指定索引执行的吧 2、这个扫描行数都是预估的不一定准的, »

KeepAlived保证Mysql主从自动切换

环境准备 前面有几篇文章对于MySQL主从搭建做了一些铺垫: 文章一:MySQL中Binlog的常用设置 文章二:MySQL主从同步-原理&实践篇 先启动Master与Slave的2台mysql服务器,具体信息如下: ➜ ~ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8f31266d08fc docker-mysql-master:v1 "/usr/sbin/ »

MySQL主从同步-原理&实践篇

什么是mysql的主从复制? MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。 Mysql复制原理 原理: (1)Master服务器将数据的改变记录二进制Binlog日志,当Master上的数据发生改变时,则将其改变写入二进制日志中; (2)Slave服务器会在一定时间间隔内对Master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/OThread请求Master二进制事件 (3)同时主节点为每个I/O线程启动一个Dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取二进制日志, »

MySQL Binlog设置

获取mysql镜像 ➜ ~ docker pull mysql ➜ ~ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest d435eee2caa5 3 weeks ago 456MB 启动mysql ➜ ~ docker run -itd --name docker-mysql-master -v »

MySQL锁

MySQL锁分类 每次在听别人说锁的时候,是不是会有点儿晕?(一会儿排它锁,一会儿GAP锁...)因为你站在不同的角度来说,它的名字就会不同。根据我们DB的引擎、隔离级别不同,导致的锁的情况也会不同。 下面根据几种不同的类型对锁做一个划分: 力度划分: 表级锁:表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MYISAM与INNODB都支持表级锁定,开销小,加锁快,粒度大,锁冲突概率大,并发度低,适用于读多写少的情况。 页级锁: »

Ten MySQL performance tuning settings after installation-安装完 MySQL 后必须调整的 10 项配置

这是一篇关于MySQL配置非常好的文章,原文地址:https://www.percona.com/blog/2014/01/28/10-mysql-performance-tuning-settings-after-installation/ 然后,翻译我是转载的OSC的一篇:http://www.oschina.net/translate/10-mysql-settings-to-tune-after-installation 正文 当我们被人雇来监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议。许多人在事后都非常惊讶,因为我们建议他们仅仅改动几个设置,即使是这里有好几百个配置项。这篇文章的目的在于给你一份非常重要的配置项清单。 »

MongoDB系列-初识MongoDB

为什么学习MongoDB? 最近,由于业务的发展,把数据存放在MySQL中已经很难实现。所以,也给自己一个很好的学习mongo的机会。然后,我作为一个初学者,我会把我自己的学习心得以及学习过程中踩过的坑用文字的形式把它记录下来。也作为自己的一个成长! 其实,只要当数据量一上来,关系型数据库就会觉得吃力,就没有NoSQL那么得心应手了,因为,关系型数据与NoSQL数据库使用的场景不同。(这里我到时候会整理一份关于关系型数据库与非关系型数据的总结) 这次选择使用MongoDB原因: 1、数据量上来了; 2、我们需要保存每一条数据的每个字段的生命周期; 3、我们要对每个字段添加附属信息(值、来源、 »