很多开发同学对SQL优化如数家珍,却对MySQL架构一知半解.岂不是只见树叶,不见森林,终将陷入细节中不能自拔. 今天就一块学习MySQL分层架构,深入了解MySQL底层实现原理,以及每层的作用,我们常见的SQL优化到底在哪一层做了优化? 1. MySQL整体架构 由图中可以看到MySQL架构主要分为Server层和存储引擎层. Server层又分为连接器.缓存.分析器.优化器.执行器.所有跨存储引擎的功能都在这层实现,比如:函数.存储过程.触发器.视图等. 存储引擎是可插拔式的,常见的存储引擎…
提起MySQL,其实网上已经有一大把教程了,为什么我还要写这篇文章呢,大概是因为网上很多网站都是比较零散,而且描述不够直观,不能系统对MySQL相关知识有一个系统的学习,导致不能形成知识体系.为此我撰写了这篇文章,试图让这些底层架构相关知识更加直观易懂: 尽量以图文的方式描述技术原理: 涉及到关键的技术,附加官网或者技术书籍来源,方便大家进一步扩展学习: 涉及到的背景知识尽可能做一个交代,比如讨论到log buffer的刷盘方式,延伸一下IO写磁盘相关知识点. 好了,MySQL从不会到精通系列马…
mysql数据库架构设计与优化 2019-04-23 20:51:20 无畏D尘埃 阅读数 179  收藏 更多 分类专栏: MySQL   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_37735385/article/details/89480900 数据库设计规范 数据库设计规范 1. 数据库命名规范 2. 数据库基本设计规范 3. 数据库索引设计规范 4. 数据库字段设计规…
我们常见的并发锁ReentrantLock.CountDownLatch.Semaphore.CyclicBarrier都是基于AQS实现的,所以说不懂AQS实现原理的,就不能说了解Java锁. 上篇文章讲了AQS的加锁流程,这篇文章再一块看一下AQS具体源码实现. 先回顾一下AQS的加锁流程 1. AQS加锁流程 AQS的加锁流程并不复杂,只要理解了同步队列和条件队列,以及它们之间的数据流转,就算彻底理解了AQS. 当多个线程竞争AQS锁时,如果有个线程获取到锁,就把ower线程设置为自己 没…
一.MySQL还是个黑盒子 我们都知道,只要我们系统引入了 MySQL 驱动和连接池,就能从数据库连接池获取一个数据库连接,然后就可以执行增删改查的操作了. 可是我们并不知道 MySQL 里面是怎么执行的,例如我们执行了 insert 语句,只知道表里面多了一条数据,MySQL 是怎么插入的我们就不知道了. 二.解开 MySQL 这个黑盒子 1.一条工作线程: 举例: 我们都知道,在 Socket 编程里,ServerSocket 会有一条线程负责监听 Socket 发送过来的网络请求,并且负责…
1.把MySQL当个黑盒子一样执行SQL语句 我们的系统采用数据库连接池的方式去并发访问数据库,然后数据库自己其实也会维护一个连接池,其中管理了各种系统跟这台数据库服务器建立的所有连接 当我们的系统只要能从数据库连接池获取到一个数据库连接之后,我们就可以执行增删改查的SQL语句了 从上图其实我们就可以看到,我们可以通过数据库连接把要执行的SQL语句发送给MySQL数据库. 然后呢?大部分同学了解到这个程度就停下来了,然后大家觉得要关注的可能主要就是数据库里的表结构,建了哪些索引,然后就按照SQL…
一.引言 平时我们在做Java系统时,一般情况下都会连接到一个MySQL数据库上去,执行各种增删改查的语句.大部分的Java工程师对MySQL的了解和掌握程度,大致就停留在这么一个阶段:对MySQL可以建库建表建索 引,然后就是执行增删改查去更新和查询里面的数据!如下图所示: 但是实际在使用MySQL的过程中,大家总会遇到这样那样的一些问题,比如死锁异常.SQL性能太差.异常报错,等等.大部分Java工程师在遇到MySQL数据库的一些问题时,一般都会上网百度.谷歌,然后自己尝试捣鼓着解决一下,最…
MySQL 的架构设计 MySQL 架构一定要结合前台业务来设计.优化,所以不管是哪种架构.根据业务要求组合成符合需求的即是最好的.不能泛泛而谈同时.也必须注意数据的安全(如ipsec,ssh,vpn传输) MySQL常见的架构 MySQL常见的架构都是进行业务切分.前端缓存.分库分表.若是过亿的查询量则先从业务上拆分.将 bbs.web.blog 分成几个组.然后再做成一主多从.读写分离的方式而且.在设计表的时候.一般情况下.备库常充当起备份查询的作用,至于.读写分离.在程序设计之初.读和写是…
架构篇(1) 读书笔记 1.Scale(扩展):从数据库来看,就是让数据库能够提供更强的服务能力 ScaleOut: 是通过增加处理节点的方式来提高整体处理能力 ScaleUp: 是通过增加当前处理节点的处理能力来提高整体的处理能力 2.事务最小化原则: 避免分布式事务的解决方案 a)进行ScaleOut 设计的时候合理设计切分规则,尽可能保证事务所需数据在同一个MySQLServer 上,避免分布式事务.大多数时候也只能兼顾到一些大部分的核心事务,不是一个很完美的解决方案. b)大事务切分成多…
1.Scale(扩展):从数据库来看,就是让数据库能够提供更强的服务能力 ScaleOut: 是通过增加处理节点的方式来提高整体处理能力 ScaleUp: 是通过增加当前处理节点的处理能力来提高整体的处理能力 2.事务最小化原则: 避免分布式事务的解决方案 a)进行ScaleOut 设计的时候合理设计切分规则,尽可能保证事务所需数据在同一个MySQLServer 上,避免分布式事务.大多数时候也只能兼顾到一些大部分的核心事务,不是一个很完美的解决方案. b)大事务切分成多个小事务,数据库保证各个…