| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL--事务+存储引擎+表类型+视图+用户管理 -> 正文阅读 |
|
[大数据]MySQL--事务+存储引擎+表类型+视图+用户管理 |
目录 1.事务1.1 概念:事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败,例如:转账就要用事务来处理,用以保证数据的一致性。 ? 回滚:手动开始一个保存点,并且设置一个事务 ?
1.2 回退事务保存点:保存点时事务中的点,用于取消部分事务 当结束事务时,会自动删除该事务所定义的所有保存点,当执行回退事务时,通过指定的保存点可以回退到指定的点。 1.3提交事务使用commit语句可以提交事务,当执行了commit语句后,会确认事务的变化,结束事务,删除保存点,释放锁,数据生效,当使用commit语句结束事务之后,其他会话[其他连接],将可以查看事务变化之后的新数据[所以数据将正式生效] 1.4事务细节注意点1.如果不开始事务,默认情况下,dml时自动提交的,不能回滚。 2.如果开始一个事务,你没有创建保存点,你可以执行rollback,默认就是回滚到你事务开始的状态 3.你可以在这个事务中(还没有提交时),创建多个保存点。比如:savepoint aaa;执行dml,savepoint bbb 4.你可以在事务没有提交前,选择回退到哪个保存点 5.mysql的事务机制需要innobd的存储引擎才可以使用,myisam不好使 6.开始一个事务 1.5事务的隔离级别1.5.1 介绍隔离性:一个事务的执行,不应该受到其他事务的干扰。 1.多个事务开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个连接在获取数据时的准确性; 2.如果不考虑隔离性(一个事务执行受到其他的事务的干扰),引发一些安全问题,主要体现在读取数据上:
? 1.5.3演示脏读开启两个窗口A,B 设置A窗口的隔离级别为read uncommitted;
在A,B两个窗口中开启事务 ?
在B窗口中完成转账的功能:
*** 事务未提交!!! ? 在A窗口中进行查询
***发现A窗口中已经查询到转账成功了!!!已经发生了脏读:一个事务中已经读到了另一个事务未提交的数据。 ? 1.5.4避免脏读,演示不可重复发生开启两个窗口A,B 设置A窗口的隔离级别为read committed;
分别在两个窗口中开启事务: ?
在B窗口中完成转账
? *** 没有提交事务!!! ? 在A窗口中进行查询:
*** 发现这个时候没有转账成功!!!(没有查询到另一个事务未提交的数据:说明已经避免了脏读)。 ? 在B窗口中提交事务
在A窗口查询
*** 发现这次的结果已经发生了变化!!!(已经发生不可重复读:一个事务已经读到了另一个事务提交的update的数据,导致多次查询结果不一致。) ? 1.5.5 演示不可重复读分别开启两个窗口A,B 设置A窗口的隔离级别:repeatable read;
在A,B两个窗口中开启事务: ?
在B窗口完成转账
*** 未提交事务!!! ? 在A窗口中进行查询
*** 发现没有转账成功:说明避免脏读!!! 在B窗口中提交事务
在A窗口中再次查询: *** 发现在一个事务中的多次查询结果是一致!!!(已经避免不可重复读)。 ? 1.5.6演示串行化·开启两个窗口A,B 设置A窗口的隔离级别:serializable
分别在两个窗口中开启事务:?
在B窗口中插入一条记录 ?
在A窗口中进行查询 ?
***发现A窗口已经卡住了(说明事务不允许出现并发,A窗口需要等待B窗口事务执行完成以后,才会执行A窗口的事务。)当B窗口的事务结束(提交或者回滚),那么A窗口马上就会出现结果。 1.6事务的ACID特性1.6.1 原子性原子性:事务的不可分割,组成事务的各个逻辑单元不可分割。 1.6.2一致性一致性:事务执行的前后,数据完整性保持一致。 1.6.3 隔离性隔离性:事务执行不应该受到其他事务的干扰。 1.6.4 持久性持久性:事务一旦结束,数据就持久化到数据库中。 2. mysql 表类型和存储引擎2.1基本介绍1.mysql的表类型由存储引擎(Storage Engines)决定,主要包括MyISAM,innoDB,Memory等。 2.mysql数据表主要支持六种类型,分别是CVS,Memory,ARCHIVE,MRG MYISAM,MYISAM,innoDB. 3.这六种又分为两类,一类是“事务安全型”比如:innoDB;其余都属于第二类,称为“非事务安全型” 2.2主要的存储引擎/表类型特点? 2.3细节说明我这里重点给大家介绍三种: MyISAM、InnoDB、MEMORY ? 2.3.1三种存储引擎表使用案例
2.4如何选择表的存储引擎? 2.5 修改存储引擎
3.视图(view)3.1视图的作用三范式让表查询变得复杂,对于常用的数据查询,反复写复杂的查询语句十分不方便,因此可以创建一个虚拟的表(不存数据),这个虚拟表的数据来源于数据库中存在的其他表,虚拟表的数据来源就在定义时给定 3.2视图和基表的关系? 3.3视图的基本使用? 3.4视图的注意点
3.5视图的优点
灵活:如果系统中有一个旧的表,这张表由于设计的问题,即将被废弃。然而很多应用都基于这张表,不易修改。这是就可以建立一个视图,视图中的数据直接映射到新建的表。这样,就可以少做很多改动,也达到升级数据表的目的。 3.6视图的练习
4.MySQL用户管理4.1概念:MySQL中的用户,都存储在系统数据库mysql的usre表中host:允许登录的“位置”,localhost表示该用户只允许在本机登录,也可以指定ip地址,比如:192.168.0.1? user:用户名 authentication_string:密码,是通过mysql的password()函数加密之后的密码 4.2创建用户
4.3删除用户
4.4用户修改密码修改自己的密码:
修改他人的密码:
4.5mysql 中的权限? 4.6给用户授权? 4.7回收用户授权基本语法:
4.8权限生效指令如果权限没有生效可以执行下列命令
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 12:50:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |