mysql存储引擎
mysql存储引擎存储引擎介绍innodb12345678910111213141516171819202122innoDB是一种兼顾了高可靠性和高性能的通用存储引擎。在5.7和8.0版本中,innodb是默认的mysql存储引擎。在创建表的时候如果不指定存储引擎,默认就是指定的innodb作为存储引擎innodb存储引擎支持事务,设计目标主要面向在线事务处理OLTP的应用,其特点是行锁设计,支持外键,并且类似于Oracle的非锁定读,即默认读取操作不会产生锁,5.58后成为默认引擎innodb使用MVCC(多版本并发)控制来获得高并发性,并且实现了sql标准的4种隔离级别innodb还提供了插入缓冲,二次写,自适应哈希索引,预读等实用功能innodb采用聚集索引的方式,每张表的存储都是按照主键的顺序进行存放PS:OLTP:MVCC插入缓冲二次写自适应哈希索引预读聚集索引
查看存储引擎的版本1select @@innodb_version;
名词解释OLTP12345OLTP(Online Transaction Processing): 联机事务处理 是专注于面向事务的数 ...
列约束及属性
列约束及属性primary key主键约束
not null非空约束
unique key唯一约束
unsigned数字类型约束
default默认值
auto_increment自增长
comment注释
foreign key外键约束
数据库类型
数据库类型整型
类型
占用字节
无符号范围
有符号范围
数据长度
tinyint
1
0 - 255
-128 - 127
3
smallint
2
0 - 65535
-32768 - 32767
5
mediumint
3
0 - 16777215
-8388608 - 8388607
8
int
4
0 - 2^32
-2^31 - 2^32-1
10
bigint
8
0 - 2^64
-2^63 - 2^63-1
20
数字类型12345678910floatfloat: 表示不指定小数位的浮点数float(M,D): 表示一共存储M个有效数字,其中小数部分占D位float(10,2): 整数部分为10位,小数部分为2位double双精度:系统用8个字节来存储数据,表示范围更大,10^308次方,但是精度只有15位左右。decimal系统自动根据存储的数据来分配存储空间,大概九个数值就会分配四个字节来进行存储,同时小数和整数部分是分开的。decimal(M,D): M表示总长度,最大值不能超过65,D代表小数部分长度,最长不能超过3 ...
sql_mode分类
sql_mode
SQL_MODE
Comments
ONLY_FULL_GROUP_BY
对于group by聚合操作,如果在select中的列,having或者order by子句的列,没有在group by中出现,那么这个SQL是不合法的。
STRICT_TRANS_TABLES
STRICT_TRANS_TABLES模式: 严格模式,进行数据的严格校验,错误输入不能被插入。
NO_ZERO_IN_DATE
在严格模式下,不接受月或者日部分为0的日期
NO_ZERO_DATE
在严格模式下,不要将0000-00-00作为合法日期。
ERROR_FOR_DIVISION_BY_ZERO
在严格模式下,insert或update过程中,如果被0除则产生错误。
NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,那么抛出错误
用户及安全管理
用户及安全管理创建用户12345创建一个用户 create user test@'10.0.0.11' identified by '123'; 创建一个用户并指定加密插件 create user test1@'10.0.0.12' identified with mysql_native_password by '123';
查询用户1select user,host, plugin from mysql.user;
删除用户1drop user test@'10.0.0.11';
修改用户12345修改用户密码 alter user test@'10.0.0.11' identified by '123456'; 修改加密插件 alter user test@'10.0.0.11' identified with caching_sha2_password by '123456';
用户授权
权 限
作用范围
作 用
all
服务 ...
mysql体系介绍
mysql体系介绍数据库和数据库实例概念123数据库:存储数据的集合数据库实例:操作数据库的集合从操作系统的角度,数据库实例表现为一个进程,对应多个线程,在非集群数据库架构中,数据库与数据库实例存在一一对应关系,在数据库集群中,可能存在多个数据库实例操作一个数据库的情况,即多对一关系
mysql基架1234567891011121314151617181920mysql基架大致分为9个模块1.mysql向外提供的交互接口(connectors):通过该组件来操作sql,实现sql的交互2.管理服务组件和工具组件(management & utilities):通过该组件提供对mysql的集成管理,如备份,恢复,安全管理等3.连接池组件(connection pool):负责监听对客户端向MySQL Server端的各种请求,到目标模块。每个成功连接MySQL Server的客户请求都会被创建或分配一个线程,该线程负责客户端与MySQL Server端的通信,接收客户端发送的命令,传递服务端的结果信息等。4.sql接口组件(sql interface):接受用户sql命令,如DM ...
mysql安装
mysql 安装123456789101112131415161718192021222324252627282930313233343536373839404142434445461.yum install -y libaio-devel # libaio-dev包的作用是为了支持同步I/O.对于数据库之类的系统特别重要# 创建目录2.mkdir /data/{app,3306/{data,logs,error-log}} -p3.touch /data/3306/error-log/mysql.log# 下载mysql包4.wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz5.cd /data/app6.mv mysql ...
No title
swap分区swap分区通常被称之为交换分区,当实际内存不足的时候,操作系统会将部分数据暂时存放到交换分区中,为当前程序腾出足够的空间。在windos中也有对应的功能被称之为虚拟内存,linux当中则是swap分区。
swap分区创建大小建议 1G-2G 1.5倍内存 2G-16G 与内存相同 16G以上 设置为16G即可
swap分区创建流程1234567891011mkdir /tmp/swap/dd if=/dev/zero of=/tmp/swap/tmp.swap bs=1024 count=4096000mkswap /tmp/swap/tmp.swap执行完上述流程之后还没有启用,如果使用free -m可以发现大小为0执行下述命令,启用swapswapon /tmp/swap/tmp.swapfree -m total ...
No title
调整tmpfs内存tmpfs以及命令介绍123456789101112131415161718tmpfs:临时文件系统,驻留在内存中,所以像/dev/shm这个目录不在硬盘中,而是在内存中。因此读写速度是较快的,我们可以将一些不需要保存的数据存放在这个目录当中,加快读写。并且值得一提的是,tmpfs系统挂载的内存大小的值,如果没有使用,是没有去真正占用的,只有当真正被使用的时候才会被占用。打个比方的话就是tmpfs挂载了500m的内存,我使用文件占用了10m,那么剩下的490m的空间是可以被其他的程序使用# 查看内存使用情况命令free -m # 以m的形式展示 total used free shared buff/cache availableMem: 1837 130 1479 8 227 1560Swap: 0 0 0 ...
No title
链表链表是一种线性存储结构,数据是随机存储的,由于数据乱序存储,因此无法清楚数据之间的前后关系。所以每个数据存储的时候会配备一个指针,这个指针指向的是自己的后继元素。综上所述。数据元素随机存储,并通过指针表示前后关系的存储结构就是链式存储结构。
链表结构一个链表由两部分组成
头指针:一个普通的指针,永远指向链表第一个节点的位置。
节点:存储数据的部分,细分又可以分为头节点、首元节点和其他节点
头节点:不存储任何数据的空节点,通常作为链表的第一个节点
首元节点:链表中第一个存有数据的节点被称之为首元节点
其他节点:其他节点
链表示意图