mysql是一种单进程,多线程的软件
从mysql逻辑架构分析主要分为三层:
1.服务层
2.核心层
3.存储引擎层
服务层:主要是完成线程的管理进程中可以派生出新的线程,在创建和消除线程是一种消耗系统资源,所有mysql就创建出一个 线程缓冲池,将不用的线程放到缓冲池中,可以解决并发量大的问题
核心层:主要就是处理查询的优化
存储引擎层:可插式存储引擎(查询管理操作数据的),可以处理文件系统,文件和日志
这个是对mysql在自己的脑海中有个模型
学习一些基本的创建删除表,数据库的sql语句:
简单的SQL语句
创建数据库
CREATE DATABASE 数据库名字
删除数据库
DROP DATABASE 数据库名字
显示所有的数据库
SHOW DATABASES 显示所有的数据库
当输入的语句存在细节上的错误的时候可以通过上下键可以调出刚刚的写的语句
创建和删除表
CREATE TABLE 表名
DROP TABLE 表名
SHOW TABLES
操作指定的数据库
USE 数据库名
查看数据表结构
DESC 表名
详细的查看该表创建的信息
show create table 表名
插入到表中的数据
insert into 表名 set 字段=插入的内容
还有一些多表查询,总之这些sql语句只要多写几次就会,写法是固定的,再下来我会分享一个sql的优化
主要讲述了在实际的写sql语法的过程中需要注意的写法,以及如何的提升运行的效率
事务在sql中是很重要的
事务是由一组SQL语句组成的逻辑处理单元
原子性Atomicity
一致性Consistent
隔离性Isolation
持久性Durable
从事务的概念就能联系到我们所谓的并发的问题
MYSQL的并发控制
多事物执行方式:
串行执行方式:同一时间只有一个事物运行效率低,无法充分利用资源
交叉并发执行:多事物交叉运行单处理器的并发方式
同时并发执行:多处理器系统中使用每个处理器处理一个事物
并发执行导致的问题:并发势必面临同读同写 问题,同读同写 导致破坏事物隔离性和数据不一致
发生数据不一致3种情况:
1.丢失修改
2.不可重复读
3.读 脏数据
当我们产生并发所带来的问题我们就需要想着如何的解决并发给我们带来的问题?
并发就是一起执行了同一个事务,那我们就应该想着如何控制,限制让多个人执行同一件事
这个时候锁机制就出来
锁:
因为为了避免多事物并发处理导致数据不一致,所以多个事物之间要隔离。事物对某个数据对象操作前,先向系统发出请求,对其枷锁,枷锁后,事物则对此数据对象具有一定的控制,在释放锁之前,其他事物不能更新此数据对象
锁分类:基本两种
读锁:
又称为共享锁,当事物1对某个数据对象加读锁,则其他事物只能对此数据对象读加锁,不能加写锁,直到事物1释放锁
写锁:
又称为排他锁
当事物1对某个数据对象加写锁,则其他事物都不能对此数据对象加任何锁
悲观锁和乐观锁
本质上是对锁机制的一种看待角度
悲观锁:
是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程 中,将数据处于锁定状态
乐观锁:
相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与 否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做
接下来就是我们在创建表的,表中的那些字段的类型,每个类型能存储的大小,这个在后续补充
根据我们实际的需求来决定需要的数据类型的大小