9、MySQL逻辑架构介绍
一、概述:
MySQL按照逻辑划分主要分为三层:服务层,核心层和存储引擎层其各层在整个架构中所扮演的角色如下:
服务层:为客户端做连接处理,授权和安全认证相关工作
核心层:查询解析,分析,优化SQL语句,缓存结果等等
存储引擎层:存储和提取数据及事物的处理
角色分担
客户端:MySQL客户端指的是不同程序语言编写的前端应用程序,及所调用的API接口(Java语言:JDBC是一种用于执行SQL语句的javaAPI),php语言的PDO扩展为PHP访问数据库定义了一个轻量级的异质性的接口,它提供了一个数据访问抽象层,这样无论使用什么数据库都可以通过一致的函数执行查询和提取数据。
服务层:MySQL属于单进程多线层结构。
核心层:完成数据的查询,缓存及优化的操作。
存储引擎层:MyISAMM,InnoDB,CLuster和Memory
存储引擎层是最贴近文件系统的功能层。
MySQL总体架构:
二、MySQL常用的存储引擎
查看当前MySQL所支持的存储引擎
mysql> show engines;
2.1 MyISAM存储引擎:
特点:支持全文索引,
能够对整张表进行加锁,不支持行锁,及锁粒度较大。
缺点:不支持事物,及没有rollback功能。
应用:日志系统,读表的操作,没有事物第并发的网站
2.2 InnoDB存储引擎:
特点:MySQL5.7之前的版本不支持全文索引,5.7及以后的支持
支持行级锁,锁粒度小
支持ACID(事物完整性和异质性)
独有的聚集索引主键设计方式,可大发提升并发读写性能
支持外键,支持崩溃数据的自我修复
注意问题
a) 所有InnoDB数据表都创建一个和业务无关的自增数字型作为主键,对保证性能很有帮助;
b) 杜绝使用text/blob,确实需要使用的,尽可能拆分出去成一个独立的表;
c) 时间建议使用 TIMESTAMP 类型存储;
d) IPV4 地址建议用 INT UNSIGNED 类型存储;
e) 性别等非是即非的逻辑,建议采用 TINYINT 存储,而不是 CHAR(1);bool
f) 存储较长文本内容时,建议采用JSON/BSON格式存储;
2.3memory存储引擎:
(1)memory存储引擎相比前面的一些存储引擎,有点不一样,其使用存储在内存中的数据来创建表,而且所有的数据也都存储在内存中。
(2)每个基于memory存储引擎的表实际对应一个磁盘文件,该文件的文件名和表名是相同的,类型为.frm。该文件只存储表的结构,而其数据文件,都是存储在内存中,这样有利于对数据的快速处理,提高整个表的处理能力。
(3)memory存储引擎默认使用哈希(HASH)索引,其速度比使用B-+Tree型要快,如果读者希望使用B树型,则在创建的时候可以引用。
(4)memory存储引擎文件数据都存储在内存中,如果mysqld进程发生异常,重启或关闭机器这些数据都会消失。所以memory存储引擎中的表的生命周期很短,一般只使用一次。
主:表级锁:分为读锁和写锁,其中读锁是共享的,可以供多人使用,而写锁是排他的,当当前表被写锁锁定的时候,其他无法读取和修改,如果是读锁则是可以其他程序可以查看。
注意:行级锁可能会造成“死锁”现象
原因分析:
1、MySQL行级锁并不是直接锁记录,而是锁索引,索引分为主键和非主键索引两种,如果一条SQL语句操作了主键索引,那么MySQL就会锁定这个主键索引,如果SQL语句操作的事非主键索引,那么MySQL会先锁定这个非主键索引,再去锁定主键索引。
2、在update和delete操作时MySQL不仅会锁定所有where条件扫描过的索引,还会锁定相邻索引(被修改的字段)。
3、MySQL锁定状态
show processlist命令可以查看当前那些线程正在运行,如果用户拥有SUPER权限可以查看所用线程,如果线程的状态有update或init某个表,则说明此事进程的status为updateing data或在sending data。
对于“too many connections”的错误信息,并且想要了解正在发生的情况则show processlist则非常有用。
相关查看命令:
show processlist;默认显示100条信息
show full processlist;显示全部线程信息
show open tables;查看哪些表是打开的。
查看服务器状态
mysql> show status like '%lock%';
查看innodb运行时的信息
mysql> show engine innodb status\G
查看服务器配置参数:
mysql> show variables like '%timeout%';
四、指定MySQL存储引擎
4.1 修改配置文件是设置默认存储引擎
vim /etc/my.cnf
default-storage-engine=innodb
保存之后重启存储引擎
创建表时指定存储引擎
create table <tb_name>(<col> ) ennine=Innodb default charset=utf8;
转载于:https://blog.51cto.com/maoxiaoxiong/2044730
9、MySQL逻辑架构介绍相关推荐
- Mysql逻辑架构介绍
一.整体架构图 MySql和其它数据库相比,它的优势在于它的架构可以在多种不同场景中应用并且发挥良好. 这一点主要体现在引擎层上,MySql的引擎是可拔插式的,业务处理和引擎是分离的,因此可以根据不同 ...
- 第 1 章 MySQL 的架构介绍
第 1 章 MySQL 的架构介绍 1.MySQL 简介 什么是 MySQL? MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数 ...
- 尚硅谷MySQL高级学习笔记 -- 1.MySQL 的架构介绍
1.MySQL 简介 什么是 MySQL? MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中 ...
- MySQL第6天:MySQL的架构介绍之逻辑架构
MySQL的架构介绍之逻辑架构 #编写时间:2017.3.7 #编写地点:广州 MySQL的优势主要体现在存储引擎的架构上,它是插件式的存储引擎架构,将查询处理和其它的系统任务以及数据的存储提取分离, ...
- MySQL 高级 ———— MySQL逻辑架构图简介
引言 本篇文章介绍MySQL的逻辑架构图. MySQL并不完美,但足够灵活,能够适应高要求环境.MySQL不仅可以嵌入到应用程序中,同时也可以支持数据仓库.内容搜索.和部署软件.高可用的冗余系统.在线 ...
- 4、MySQL 逻辑架构
4.MySQL 逻辑架构 4.1.逻辑架构总体概览 和其它数据库相比,MySQL 有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用.主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处 ...
- MySQL第7天:MySQL的架构介绍之存储引擎
MySQL的架构介绍之存储引擎 #编写时间:2017.3.9 #编写地点:广州 1.存储引擎相关的命令 //查看已安装的mysql已提供的存储引擎 mysql>show engines;//查看 ...
- MySQL第4天:MySQL的架构介绍之修改数据库编码格式
MySQL的架构介绍之修改数据库编码格式 1.配置文件介绍 #编写时间:2017.3.6 #编写地点:广州 上一篇文章可知mysql的配置文件在:/usr/share/mysql,其中/usr/sha ...
- MySQL第3天:MySQL的架构介绍之linux版安装
MySQL的架构介绍之linux版安装 #编写时间:2017.3.5 #编写地点:广州 mysql linux版安装 1.源码安装(本节不提) 2.rpm安装 (1)下载地址:https://dev. ...
最新文章
- 网站快照更新不及时要怎样解决?
- php中 可替代curl,laravel-PHP-为什么使用Guzzle代替cURL?
- 19、20_散点图、连接散点图、气泡图、不同颜色的散点图、直方图
- 支付宝即时到账接口开发 - DEMO讲解
- 分布式devops_维护分布式团队的DevOps心态的10个技巧
- SpringBoot之Bean之条件注入@ConditionalOnProperty
- ShiftViT用Swin Transformer的精度跑赢ResNet的速度,论述ViT的成功不在注意力!
- hdu 1788 最小公倍数(这题面。。。)
- 数学建模总结:四类基本模型
- 体育新闻html模板,HTML5响应式体育新闻资讯类门户网站模板源码+自适应移动端...
- node.js--尝试做一个crub
- xp mysql 5.6安装版下载地址_xp系统安装版下载,xp系统安装版下载地址
- Vulnhub--BlueSky:1
- 有关第四章css的介绍
- Win10下SQL2000 企业管理器 新建表/修改表 崩溃问题的应急
- C语言贪吃蛇游戏主要功能,C语言游戏-贪吃蛇
- 加快SP3下载速度并使用第三方系统主题!适用于XP SP3的TCPIP连接数与主题破解增强补丁下载...
- C/C++ 开发利器 CLion安装与配置
- 查看MySQL数据库的命令
- Leetcode.617 合并二叉树
热门文章
- 不同组织物料类别差异列表
- [学习总结]6、Android异步消息处理机制完全解析,带你从源码的角度彻底理解
- POJ 3308 Paratroopers (对数转换+最小点权覆盖)
- 利用反射动态实例化类执行方法并传值
- AndroidStudio_android中实现ImageView的清空操作---Android原生开发工作笔记235
- 大数据之-Hadoop源码编译_源码编译具体流程_以及编译步骤---大数据之hadoop工作笔记0046
- JAVA常用API或编程工具003--实现pdf在线阅读功能之pdf.js
- python数据结构剑指offer-替换空格
- *pdb时出错;请检查是否是磁盘空间不足、路径无效或权限不够
- ucc编译器(优化)