InnoDB存储引擎
InnoDB存储引擎逻辑存储结构介绍
表空间:表空间是InnoDB存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在 8.0版本中默认开启) ,则每张表都会有一个表空间(xxx.ibd),一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。
段:分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段 (Rollback segment),InnoDB是索引组织表,数据段就是B+树的叶子节点, 索引段即为B+树的非叶子节点。段用来管理多个Extent(区)。
区:表空间的单元结构,每个区的大小为1M。 默认情况下, InnoDB存储引擎页大小为16K, 即一 个区中一共有64个连续的页。
页:是InnoDB 存储引擎磁盘管理的最小单元,每个页的大小默认为 16KB。为了保证页的连续性, InnoDB 存储引擎每次从磁盘申请 4-5 个区。
行:InnoDB 存储引擎数据是按行进行存放的。
在行中,默认有两个隐藏字段(与MVCC相关):
Trx_id:每次对某条记录进行改 ...
MySQL事务原理和MVCC
MySQL事务原理和MVCC事务原理事务基础事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
事务的特性(ACID):
原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
其中的原子性、一致性、持久化,实际上是由InnoDB中的redo log日志和undo log日志保证的。 而持久性是通过数据库的锁和 MVCC 来保证的。
redo log重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性。
该日志文件由两部分组成:
重做日志缓冲(redo log buffer):在内存中
重做日志文件(redo log):在磁盘中
当事务提交之后会把所 ...
MySQL系统数据库和工具
MySQL系统数据库和工具系统数据库Mysql数据库安装完成后,自带了一下四个数据库,具体作用如下:
数据库
含义
mysql
存储MySQL服务器正常运行所需要的各种信息 (时区、主从、用 户、权限等)
information_schema
提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等
performance_schema
为MySQL服务器运行时状态提供了一个底层监控功能,主要用于收集数据库服务器性能参数
sys
包含了一系列方便 DBA 和开发人员利用 performance_schema 性能数据库进行性能调优和诊断的视图
常用工具mysql该mysql不是指mysql服务,而是指mysql的客户端工具。
语法 : mysql [options] [database]选项 : -u, –user=name #指定用户名 -p, –password[=name] #指定密码 -h, –host=name #指定服务器IP或域名 -P, –port=port #指定连接端口 -e, –execute ...
MySQL基础
MySQL基础数据库的相关概念为什么要使用数据库:
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。
持久化的主要作用是将内存中的数据存储在关系型数据库中,或存储在磁盘文件、XML数据文件中。
DB:数据库(Database)
即存储数据的“仓库”,其本质是一个文件系统。它保存了一系列有组织的数据。
DBMS:数据库管理系统(Database Management System)
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。
SQL:结构化查询语言(Structured Query Language)
专门用来与数据库通信的语言。
关系型数据库(RDBMS):
这种类型的数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系 (即二维表格形式)。
关系型数据库以 行(row) 和 列(column) 的形式存储数据,以便于用户理解。
优势:
复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
事 ...
MySQL索引和优化
MySQL索引和优化存储引擎MySQL体系结构MySQL体系结构分为四层:
连接层:主要完成一些类似于连接处理、授权认证、及相关的安全方案。
服务层:主要是如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行等。
引擎层:负责MySQL中数据的存储和提取,数据库中的索引是在存储引擎层实现的。
存储层:主要是将数据(如: redolog、undolog、数据、索引、二进制日志、错误日志、查询日志、慢查询日志等)存储在文件系统之上,并完成与存储引擎的交互。
存储引擎介绍建表时指定存储引擎:
12345CREATE TABLE 表名(字段1 字段1类型 [ COMMENT 字段1注释 ] ,......字段n 字段n类型 [COMMENT 字段n注释 ]) ENGINE = INNODB [ COMMENT 表注释 ] ;
查询当前数据库支持的存储引擎:
1show engines;
查询建表语句:
1show create table account;
总结:MySQL支持InnoDB、MyISAM、MEMORY、CSV、BlACKHOLE等存储引擎,MyS ...
MySQL视图存储过程和触发器
MySQL视图存储过程和触发器视图介绍视图(View)是一种虚拟存在的表。视图只保存了查询的SQL逻辑,不保存查询结果,查询视图就是查询了视图定义的SQL。
基本语法创建:
1234CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [CASCADED | LOCAL ] CHECK OPTION ]-- 示例create or replace view stu_v_1 as select id, name from student where id <= 10;
查询:
1234-- 查看创建视图语句:SHOW CREATE VIEW 视图名称;-- 查看视图数据:SELECT * FROM 视图名称 ......;
修改:
1234-- 方式一:CREATE OR REPLACE VIEW 视图名称[(列名列表)] AS SELECT语句 [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]-- 方式二:ALTER VIEW 视图名称[(列名列表)] AS SELECT语句 [ ...
MySQL锁
MySQL锁锁概述锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、 RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。
MySQL中的锁,按照锁的粒度分,分为以下三类:
全局锁:锁定数据库中的所有表。
表级锁:每次操作锁住整张表。
行级锁:每次操作锁住对应的行数据。
全局锁介绍全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。
其典型的使用场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性。
对数据库进行进行逻辑备份之前,先对整个数据库加上全局锁,一旦加了全局锁之后,其他的DDL、 DML全部都处于阻塞状态,但是可以执行DQL语句,也就是处于只读状态,而数据备份就是查询操作。 那么数据在进行逻辑备份的过程中,数据库中的数据就是不会发生变化的,这样就保证了数据的一致性和完整性。
一致性数据备份语法: ...
Activiti整合Spring
Activiti整合Spring一、Activiti与Spring整合开发1.1 Activiti与Spring整合的配置1)、在pom.xml文件引入坐标如下
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103<properties> <slf4j.version>1.6.6</slf4j.version> <log4j.version>1.2.12</log4j.version></properties><dependencies> <dependency> <groupId>org ...
Docker搭建主从
Docker搭建主从docker搭建mysql主从拉取镜像拉取mysql5.7镜像:docker pull mysql:5.7
搭建主库1、新建主服务器容器实例3307
123456docker run -p 3307:3306 --name mysql-master \-v /mydata/mysql-master/log:/var/log/mysql \-v /mydata/mysql-master/data:/var/lib/mysql \-v /mydata/mysql-master/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root \-d mysql:5.7
2、进入/mydata/mysql-master/conf目录下新建my.cnf
vim my.cnf:
12345678910111213141516[mysqld]## 设置server_id,同一局域网中需要唯一server_id=101 ## 指定不需要同步的数据库名称binlog-ignore-db=mysql ## 开启二进制日志功能log-bin=mall-my ...
Activiti工作流(一)
Activiti工作流工作流概述介绍工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现。
一个软件系统中具有工作流的功能,我们把它称为工作流系统,一个系统中工作流的功能是什么?
就是对系统的业务流程进行自动化管理,一个软件的系统核心根本上还是系统的业务流程,所以工作流是建立在业务流程的基础上,工作流只是协助进行业务流程管理。即使没有工作流业务系统也可以开发运行,只不过有了工作流后可以更好的管理业务流程,提高系统的可扩展性。
具体应用1、关键业务流程:订单、报价处理、合同审核、客户电话处理、供应链管理等
2、行政管理类:出差申请、加班申请、请假申请、用车申请、各种办公用品申请、购买申请、日报周报等凡是原来手工流转处理的行政表单。
3、人事管理类:员工培训安排、绩效考评、职位变动处理、员工档案信息管理等。
4、财务相关类:付款请求、应收款处理、日常报销处理、出差报销、预算和计划申请等。
5、客户服务类:客户信息管理、客户投诉、请求处理、售 ...