近期一直在忙项目,各种加班加点,项目上线。渐渐的没有了学习的时间。这不,刚这几天才干抽出点时间。忙里偷闲,正在看一本数据库的书籍。相信非常多小伙伴们也都看过 — — 《MySQL 技术内幕:InnoDB 存储引擎》。这本书非常具体的讲述了 MySQL 的设计思想,体系结构。存储引擎。索引,事务。以及对性能的调优等。当然,如今我也是刚刚看了一部分。至于如今写这篇文章,主要是为了记录一下我的学习历程,而且和大家分享一些新的东西。


背景


至于背景嘛,这里就不多说了。假设感兴趣的话。还是推荐大家看一看这本书的。那么如今嘛,先了解一下 MySQL 的体系结构也不错,没准还能够拿出来炫耀一下(纯属忽悠)。


概念


在说体系结构之前,先说两个名词,并且是在数据库领域里非经常见的两个词:“数据库”和“数据库实例”。


我想,小伙伴们肯定都知道这两个名词的,并且有时候还常常会区分不出来。那么。什么是“数据库”?什么又是“数据库实例”呢?以下我就具体跟大家说说。

首先说“数据库”,数据库是物理操作系统文件或其它形式的文件类型的集合。

在 MySQL 中。数据库文件能够是 frm、myd、myi、ibd 结尾的文件。


然后说“数据库实例”,数据库实例是由数据库后台进程/线程以及一个共享内存区组成。共享内存能够被执行的后台进程/线程所共享。须要注意的是。数据库实例才是真正用来操作数据库文件的。

这两个词有时能够互换使用,但两者的概念全然不同。在 MySQL 中。实例和数据库通常关系是一 一相应的,即一个实例相应一个数据库,一个数据库相应一个实例。可是,在集群情况下,可能存在一个数据库可被多个实例使用的情况。


体系结构


MySQL 是一个可移植的数据库,差点儿能在当前全部的操作系统上执行,如 Unix/Linux、Windows、Mac 和 Solaris。

各种系统在底层实现方面各有不同,可是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。




MySQL 由下面几部分组成:

  • Connectors:不同语言中与 SQL 的交互

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


max_connections:就是整个MySQL实例的最大连接数限制
         
max_user_connections:是单个用户的最大连接数,这里未指明是哪个用户,是随意一个用户。

  • Management Serveices & Utilities:系统管理和控制工具

备份和恢复的安全性,复制。集群。管理,配置,迁移和元数据。

  • Connection Pool:连接池

进行身份验证、线程重用。连接限制,检查内存,数据缓存;管理用户的连接,线程处理等须要缓存的需求。

  • SQL Interface:SQL 接口

进行 DML、DDL,存储过程、视图、触发器等操作和管理。用户通过 SQL 命令来查询所需结果。

  • Parser:解析器

查询翻译对象的特权;SQL 命令传递到解析器的时候会被解析器验证和解析。


  • Optimizer:查询优化器

訪问路径的统计数据;



在 MySQL 优化语句过程中,能够通过设置 optimize_switch 控制优化行为。

在生产环境上。某时间段 MySQL server压力特别大,load 一度达到了 100,查询发现数据库中有大量的 sql 语句 state 状态 result sorting ,result sorting 这样的排序特别消耗 cpu 和内存资源。抽取当中的一条 sql 查看运行计划。


  • Cache 和 Buffer:查询缓存

全局和引擎特定的缓存和缓冲区;



  • Engine:存储引擎

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


MySQL 的 Windows 版本号默认存储引擎为 InnoDB,InnoDB 支持事务,而且提供行级的锁定。



结束语


想要认识 MySQL,这里不过个開始。在兴许的学习中,我还会不定时的跟大家分享,同一时候。小伙伴们有新的想法也能够跟我一块交流交流。



最新文章

  1. Markdown入门基础
  2. 编译原理简单语法分析器(first,follow,分析表)源码下载
  3. <a>标签,鼠标经过或者停留触发延时响应事件
  4. 什么是C#编程语言明明白白学C#
  5. IO的阻塞、非阻塞、同步、异步
  6. NSIndexPath初始化
  7. 淘宝对接API
  8. HBase API详解
  9. javascript笔记整理(事件)
  10. 使用Java7提供Fork/Join框架
  11. bootstrap开始咯
  12. Hibernate的一些事儿
  13. .net是最牛逼的开发平台没有之一
  14. 转 使用HAProxy,PHPRedis,和MySQL支撑10亿请求每周架构细节
  15. 移植Linux-3.4.2内核到S3C2440
  16. 深入浅出理解 TCP/IP 协议 (一)
  17. Spring学习之旅(二)极速创建Spring框架java Web工程项目
  18. Javascript - ExtJs - Ext.form.Panel组件
  19. java 批量插入 Oracle
  20. 学习Spring Boot:(二十)使用 MongoDB

热门文章

  1. 《生活在Linux中》之:在Bash的Emacs模式中使用Vim
  2. BZOJ4031——HEOI小z的房间
  3. 0x03 递归
  4. Vue读书笔记:关于$ref、props和$emit
  5. c#常量如何使用
  6. shopping car 3.0
  7. js 数据类型判断
  8. Android回炉系列之四大组件之首Activity
  9. iOS构建流畅的交互界面--CPU,GPU资源消耗的原因和解决方案
  10. Unity 声音播放不受Time.scale为0的影响