《MYSQL》备忘录
用于整理 MySQL 的相关知识,以备查询。
01 MySQL 概览存储引擎:
InnoDB:支持事务,支持行级锁,支持外键,采用 MVCC 支持高并发,支持四个隔离级别
MyISAM:不支持事务,只支持表锁,支持压缩表和空间数据索引,数据恢复困难
索引数据结构:
AVL 树:左右子树树高相差不超过 1 的平衡二叉树,插入和删除会引入旋转操作,适合查找多的场景
红黑树:确保没有一条路径会比其他路径长 2 倍,近似平衡,适合插入删除操作多的场景
跳表:平均性能和红黑树相当,但实现更为简单
B 树:多路查找树,中间节点也会携带实际数据
B+ 树:多路查找树,只有叶子节点才会携带实际数据,查询性能稳定
B+ 树和红黑树比较:
B+ 树一个节点可以存储多个元素,相较于红黑树树高更低,磁盘 IO 次数小
磁盘预读功能对 B+ 树产生优化功能
B+ 树和 B 树比较:
B+ 树磁盘 IO 更低,其内部节点全部是指针,没有实际数据,能够更快找到元素
B+ 树查询效率更加稳定
B+ 树遍历效率高
MySQL 索引:在存储层实现,不同的存储引擎具有不同的索引类型
B+ 树索引: ...
MySQL实战45讲
本文主要是对 MySQL实战 45 讲中内容的一些总结,以备查阅。
01 基础架构:SQL 查询语句如何执行
MySQL 基本架构图如上,大体上分为 Server 层和存储引擎层。前者涵盖了 MySQL 的大多数核心服务,如内置函数,跨存储引擎的功能,如存储过程,触发器,视图等 ;后者则是负责数据的存储和提取,其架构模式是插件式的,如 InnoDB,MyISAM,Memory 等,其中 InnoDB 从 MySQL 5.5 之后成为默认存储引擎。
考虑这样的一条语句:select * from T where ID=10 ,了解一下每个组件的功能。
连接器:用户在发送 SQL 语句前需要和 Server 端连接,TCP 连接之后,连接器对用户身份进行认证。在连接的时候尽量选择长连接,可能会发现 MySQL 的内存占用涨得很快,这是因为执行过程中的临时内存是管理在连接对象里面的。为了解决该问题,可以定期断开连接或者主动执行重置连接 mysql-reset_connection
查询缓存:MySQL 拿到一个查询请求后,先去查询缓存里面看看是不是已经执行过该语句,如果存 ...
《深入浅出MySQL》笔记
本文用于记录《深入浅出MySQL》里面的知识要点,以备再次查阅。
第二章 SQL基础MySQL使用入门:
SQL语句分类:DDL,DML,DCL。
DDL:数据定义语言,对数据库内部的对象进行创建,删除,修改等操作。
123456789101112131415161718// 数据库CREATE DATABASE dbname;SHOW DATABASES;USE dbname;DROP DATABASE dbname;// 表CREATE TABLE tablename ( column_name1, type1 constraints, ... column_namen, typen constraints);DESC tablename; SHOW CREATE TABLE tablename;DROP TBALE database;ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name];ALTER TABLE tablename ADD [COLUMN] column_ ...
MySQL基本操作
本文介绍MySQL数据库的简单使用方法,包括数据库的启动和连接,以及数据的增删改查等。操作环境在CentOS 7中。
数据库连接和断开连接在进行数据库的连接之前,我们需要先启动数据库服务:
1shell> systemctl start mysqld.service
数据库连接命令:
12shell> mysql [-h host] -u root -pEnter password: *****
缺省host就表示连接本地的mysql数据库。
数据库断开连接:
12mysql> quitBye
查询连接到mysql后,可以查询版本信息,当前日期和时间和当前用户:
1234567mysql> SELECT VERSION(), CURDATE(), NOW(), USER();+-----------+--------------+---------------------+----------------+| VERSION() | CURDATE() | NOW() | USER() |+------ ...
CentOS 7安装常用软件方法
本文将会在CentOS 7的情况下安装一下常用的开发软件,主要记录在软件安装中遇到的问题和解决问题的方法。
概述由于国内的网络等原因,国外的一些资源或者被墙,或者是网络连接的速度慢,这个时候就需要我们使用镜像等网络资源来提高自己获取资源的速度。
实例MySQL 8.0安装CentOS 7中可能已经预安装了Mariadb,我们首先可以查询一下是否安装了Mariadb,如果安装了就直接卸载这个数据库:
12rpm -qa | grep mariadb*rpm -e --nodeps mariadb*
接下来下载MySQL官方的Yum Repository并且进行安装,注意具体的版本可以自己选择:
123wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm #根据版本选择rpm -ivh mysql-community-release-el7-5.noarch.rpmyum install mysql-server # 安装
但是由于网络原因,资源下载速率很慢,这个时候我们可以根据输出信息来决定下载的包 ...