mysql概述
MySql大致分为三层结构:
- 第一层:客户端并非MySql所独有,例如:连接处理、授权认证、安全等功能均在这一层处理
- 第二层:核心服务包括查询解析、分析、优化、缓存、内置函数(比如 : 时间、数学、加密等函数),所有的跨存储引擎的功能也在这一层实现 : 存储过程、触发器、视图等
- 第三层:存储引擎:负责 MySQL 中的数据存储和提取,和 Linux 下的文件系统类似,每种存储引擎都有其优势和劣势,中间的服务层通过 API 与存储引擎通信,这些 API接口 屏蔽不同存储引擎间的差异。
1.1连接管理和安全性
每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行。
1.2 并发控制
只要有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。主要在两个层面上进行解决:服务器层面和存储引擎层。并发控制的常见解决方法就是锁机制:
- 读写锁:在处理并发读或者写的时候,可以通过实现一个由两种类型的锁组成的锁系统来解决问题:共享锁和排它锁,也就是读锁和写锁。读锁是共享的,相互之间不会阻塞,多个用户在同一个时刻可以读取同一个数据而互不干扰,而写锁是排他的,一个写锁会阻塞其它的写锁和读锁。
- 锁粒度:一种提高共享资源并发性的方式就是让锁定对象更具有选择性。尽量锁定需要修改的部分数据,而不是所有的资源。更理想的方式就是只对会修改的数据片段进行精确的锁定。任何时候,锁定的数据量越少,则并发性越强。但是加锁也是需要耗费资源。因此需要平衡。
- 表锁:是开销最小的策略,它锁定整张表,一个用户在对表进行写操作的时候,需要提前获取写锁。这样会阻塞其他用户对该表的读写操作。只有没有写锁的时候,其它读取的用户才能获得读锁。读锁之间是不会相互阻塞的。
- 行级锁:行级锁最大程度的支持并发处理。行级锁开销最大。行级锁在存储引擎层面实现。
1.3事务
事务特性:ACID
- 原子性(Atomicity):一个事务必须看成是不可分割的最小工作单元
- 一致性(Consistency):数据库总是从一个一致性的状态转换成另外一个一致性的状态
- 隔离性(Isolation):一个事务所做的修改在提交以前,对其他事务是不可见的。
- 持久性(Dueability):一旦事务提交,则其所作的修改就会永久保存在数据库中。
隔离级别
- Read Uncommited (读未提交):事务中的修改,即使没有提交,对其他事务也是可见的。事务可以读取没有提交的数据。也叫做脏读。
- Read commited(读提交):一个事务从开始提交前,所做的任何修改对其他事务是不可见的。这个级别有时候也叫做不可重复读。
- Repeatable read(可重复读):该级别保证了在同一个事务中多次读取同样记录的结果是一样的,但是会出现幻读。幻读就是当某个事务在读取某个范围内的记录的时候,另外一个事务又在该范围插入了新的记录,当之前的事务再次读取该范围的记录的时候,会产生幻行。
- Serializable(可串行化):最高的隔离级别
死锁:两个或者多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而导致恶性循环。当多个事务试图以不同的顺序锁定资源的时候,就可能发生死锁。一个常见的死锁解决方法就是:回滚事务。
mysql概述的更多相关文章
- MySQL 概述和基础
# MySQL 概述 什么是数据库 存储数据的仓库 都有哪些公司在用数据库 金融机构.游戏网站.购物网站.论坛网站-- 提供数据库服务的软件 MySQL.Oracle.SQL Server.DB2.M ...
- MySql概述及入门(五)
MySql概述及入门(五) MySQL集群搭建之读写分离 读写分离的理解 为解决单数据库节点在高并发.高压力情况下出现的性能瓶颈问题,读写分离的特性包括会话不开启事务,读语句直接发送到 salve 执 ...
- MySQL概述及入门(四)
MySql概述及入门(四) 什么是MySQL的锁? 数据库锁定机制,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则,简单说,就是不让别人动 总的来说,MySQL各 ...
- MySQL概述及入门(三)
MySql概述及入门(三) MySQL性能优化 主要优化安全和性能方面 安全方面 : 数据可持续性 性能方面 : 数据的高性能访问 性能优化——慢查询 在MySQL数据库中有一个慢查询日志功能,去获取 ...
- MySQL概述及入门(二)
MySql概述及入门(二) MySQL架构 逻辑架构图: 执行流程图: MySQL的存储引擎 查询数据库支持的存储引擎 执行: show engines: 多存储引擎是mysql有别于其他数据库的一大 ...
- MySQL概述及入门(一)
MySql概述及入门(一) 什么是MySQL? MySQL是当今主流的关系型数据库管理系统(记录是有行有列的数据库) , 可以与Oracle 和SQL Server 竞争 , 是最好RDBMS( ...
- 数据库及MySQL概述
#什么是数据 用来描述事物的符号记录.可以是数字.文字.图形等,有多种形式,经过数字化之后存入计算机 #什么是数据库 数据库(Database)就是一个用来存放数据库的仓库,是按照一定的数据结构来组织 ...
- MySQL学习(1)---MySQL概述
什么是数据库 概述 数据库(Database)是长期存储在计算机内有组织.大量.共享的数据集合.它可以供各种用户共享,具有最小冗余度和较高的数据独立性.数据库管理系统DBMS(Database Man ...
- MySQL --概述--
Mysql是最流行的关系型数据库管理,在Web应用方面MySQL是最好的RDBMS:关系数据库管理系统 什么是数据库? 数据库(Database)是按照数据结构来组织,存储和管理数据的仓库. 每个数据 ...
- 1 MySQL概述
目录: 1. 简述 2. 历史 3. 同类产品 4. 优点和不足 5. MySQL存储引擎 6. MySQL架构 1. 简述 MySQL是一个关系型数据库管理系统.其体积小,速度快,开发源代码,使用成 ...
随机推荐
- Java中array、List、Set互相转换
数组转List String[] staffs = new String[]{"A", "B", "C"}; List staffsList ...
- POJ 2478Farey Sequence
Farey Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17744 Accepted: 7109 D ...
- maven将依赖依赖打包到jar中
通过maven-assembly-plugin插件可以实现将依赖jar包打包到自己的jar包中的需求,只需要在pom.xml中配置该插件即可,配置如下: <build> <plugi ...
- PHP mkdir新建目录
一.在本目录下新建目录 <?php$dir_url = 'aaa/';if(!is_dir($dir_url)) { mkdir($dir_url, 0777);}?> 二.在级联创建 ...
- java8中Lambda表达式和Stream API
一.Lambda表达式 1.语法格式 Lambda是匿名函数,可以传递代码.使用“->”操作符,改操作符将lambda分成两部分: 左侧:指定了 Lambda 表达式需要的所有参数 右侧:指定了 ...
- Java中 try--catch-- finally、throw、throws 的用法
一.try {..} catch {..}finally {..}用法 try { 执行的代码,其中可能有异常.一旦发现异常,则立即跳到catch执行.否则不会执行catch里面的内容 } catch ...
- Linux进程调度器概述--Linux进程的管理与调度(十五)
调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换. 1 背景知识 1.1 什么是调度器 ...
- react 之 reflux 填坑
注意:老铁些,在看这篇文章的之前,最好了解一下react 的全局状态管理库哦,不然可能会坐飞机. ^_^ React 之reflux (它是一个功能模块,需要安装引入): import Reflux ...
- 【算法】LeetCode算法题-Length Of Last Word
这是悦乐书的第155次更新,第157篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第14题(顺位题号是58).给定一个字符串,包含戴尔字母.小写字母和空格,返回最后一个单 ...
- 平方根的C语言实现(一) —— 浮点数的存储
版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/7203254.html 作者:窗户 Q ...