文章目录
- 前言
- 1.打包(归档)和压缩
- 2.tar命令详解(打包和解包)
- 3.tar命令详解(解压缩)
- 4.zip命令详解
- 5.unzip命令
- 6.gzip命令
- 7.gunzip命令
- 8.bzip2
- 9.bunzip2
- 10. rar解压缩
- 总结
- 友情链接
前言
本小节讲解如何在linux当中进行解压缩,学习到命令包裹tar rar zip等相关命令。1.打包(归档)和压缩
归档,也称为打包,指的是一个文件或目录的集合,而这个集合被存储在一个文件中。归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和。
压缩文件也是一个文件和目录的集合,且这个集合也被存储在一个文件中,但它们的不同之处在于,压缩文件采用了不同的存储方式,使其所占用的磁盘空间比集合中所有文件大小的总和要小。
压缩是指利用算法将文件进行处理,达到保留最大文件信息,而让文件体积变小的目的。
基本原理为,通过查找文件内的重复字节,建立一个相同字节的词典文件,并用一个代码表示。比如说,在压缩文件中,有不止一处出现了 “mysql”,那么,在压缩文件时,这个词就会用一个代码表示并写入词典文件,这样就可以实现缩小文件体积的目的。
对文件进行压缩,很可能损坏文件中的内容,因此,压缩可以分为有损压缩和无损压缩。
无损压缩指数据必须准确无误;有损压缩指的是即便丢失个别的数据,对文件也不会造成太大的影响。有损压缩广泛应用于动画、声音和图像文件中,典型代表就是影碟文件格式 mpeg、音乐文件格式 mp3 以及图像文件格式 jpg。
采用压缩工具对文件进行压缩,生成的文件称为压缩包,该文件的体积通常只有原文件的一半甚至更小。压缩包中的数据无法直接使用,使用前需要利用压缩工具将文件数据还原,此过程又称解压缩。
Linux 下,常用的压缩命令有很多,比如 gzip、zip、bzip2 等。
2.tar命令详解(打包和解包)
Linux 系统中,最常用的归档命令就是 tar,该命令可以将许多文件一起保存到一个单独文件中。这个命令也可用作解压。
使用 tar 命令归档的包通常称为 tar 包(文件都是以“.tar”结尾的)。
tar命令做打包操作
当 tar 命令用于打包操作时,该命令的基本格式为:
[root@zaishu ~]#tar [选项] 源文件或目录
在使用 tar 命令指定选项时可以不在选项前面输入“-”。使用“cvf”选项和 “-cvf”起到的作用一样。
例1 打包文件和目录。
[root@zaishu ~]# tar -cvf aa.tar aa
aa
[root@zaishu ~]# ls
1 a aa aaa aabbc aa.tar anaconda-ks.cfg b c d e ip.sh lamp-master lamp-master.zip sdcms_php_ee_2.4.2.zip web zs
打包时需要指定打包之后的文件名,而且要用 “.tar” 作为扩展名。
例2 打包目录也是如此:
[root@zaishu /]# tar -cvf root.tar root/
root/
....
root/aa.tar
#把目录打包为test.tar文件
例3 打包多个文件
[root@zaishu /]# tar -cvf zaishu.tar xx home/
xx
home/
home/oracle/
home/oracle/.bash_logout
home/oracle/.bash_profile
home/oracle/.bashrc
home/oracle/.bash_history
[root@zaishu /]#
#把xx和home目录打包成zaishu.tar文件包
tar命令解包操作
该命令的基本格式如下: [root@localhost ~]#tar [选项] 压缩包
当用于解打包时,常用的选项与含义如表 2 所示。
例1. 解包到当前目录下
如果使用 “-xvf” 选项,则会把包中的文件解压到当前目录下。
[root@zaishu zaishu.cn]# tar -xvf zaishu.tar
xx
home/
home/oracle/
home/oracle/.bash_logout
home/oracle/.bash_profile
home/oracle/.bashrc
home/oracle/.bash_history
例2. 解包到指定位置,使用 “-C(大写)” 选项。
把文件包zaishu.tar解打包到zaishu.cn/目录下
[root@zaishu /]# tar -xvf zaishu.tar -C zaishu.cn/
xx
home/
home/oracle/
home/oracle/.bash_logout
home/oracle/.bash_profile
home/oracle/.bashrc
home/oracle/.bash_history
例3. 查看打包文件的内容,不解包
如果只想查看文件包中有哪些文件,则使用选项 “-t”,会显示里面文件的详细信息
[root@zaishu /]# tar -tvf zaishu.tar
-rw-r--r-- root/root 0 2021-10-22 17:10 xx
drwxr-xr-x root/root 0 2021-10-22 15:06 home/
drwx------ oracle/oracle 0 2021-10-22 15:06 home/oracle/
-rw-r--r-- oracle/oracle 18 2020-04-01 10:17 home/oracle/.bash_logout
-rw-r--r-- oracle/oracle 193 2020-04-01 10:17 home/oracle/.bash_profile
-rw-r--r-- oracle/oracle 231 2020-04-01 10:17 home/oracle/.bashrc
-rw------- oracle/oracle 89 2021-10-22 15:18 home/oracle/.bash_history
3.tar命令详解(解压缩)
压缩命令不能直接压缩目录,必须先用 tar 命令将目录打包,然后才能用 gzip 命令或 bzip2 命令对打包文件进行压缩。
tar命令可以同时对包进行打包和压缩,原理也是先打包,再进行压缩:
[root@localhost ~]#tar![
例1. 对已打包文件压缩
#gzip命令会把zaishu.tar压缩成zaishu.tar.gz
[root@zaishu /]# ls -l zaishu.tar
-rw-r--r-- 1 root root 10240 Oct 22 17:10 zaishu.tar
[root@zaishu /]# gzip zaishu.tar
[root@zaishu /]# ls -l zaishu.tar.gz
-rw-r--r-- 1 root root 615 Oct 22 17:10 zaishu.tar.gz //可看到空间已经变小
例2. 压缩与解压缩 ".tar.gz"格式。
[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/
#把/tmp/目录直接打包压缩为".tar.gz"格式,通过"-z"来识别格式,“-cvf"和打包选项一致
解压缩在解打包选项 “-xvf” 前面加了一个 “-z” 选项。#解压缩与解打包”.tar.gz"格式 “-C” 用于指定解压位置、“-t” 用于查看压缩包内容。
root@zaishu /]# tar -zcvf tmp.tar.gz tmp/ //打包并压缩
tmp/
tmp/.ICE-unix/
tmp/.X11-unix/
tmp/.XIM-unix/
tmp/.font-unix/
tmp/.Test-unix/
tmp/vmware-root_539-4248811709/
tmp/cgicwjYI/
[root@zaishu zaishu.cn]# tar -zxvf tmp.tar.gz //解压包到当前位置
tmp/
tmp/.ICE-unix/
...
tmp/mysql.sock.lock
例3. 压缩与解压缩 “.tar.bz2” 格式。
压缩和打包选项是 “-jcvf”
[root@zaishu /]# tar -jcvf tmp.tar.bz2 tmp/
#打包压缩为".tar.bz2"格式,注意压缩包文件名
解压缩和解包选项 -jxvf
[root@zaishu zaishu.cn]# tar -jxvf tmp.tar.bz2
把文件直接压缩成".tar.gz"和".tar.bz2"格式,是 Linux 中最常用的压缩方式。
4.zip命令详解
[root@localhost ~]#zip [选项] 压缩包名 源文件或源目录列表
注意:zip命令,需要手工安装zip的包,可参照后面内容包的安装。
例1. zip 压缩文件
[root@zaishu ~]# zip cfg.zip anaconda-ks.cfg adding: anaconda-ks.cfg (deflated 48%)
[root@zaishu ~]# ll cfg.zip
-rw-r--r-- 1 root root 896 Oct 22 17:55 cfg.zip
例2. zip 压缩多个文件
压缩命令都可以同时压缩多个文件:
[root@zaishu log]# zip log.zip vmware-*.log
adding: vmware-network.1.log (deflated 63%)
adding: vmware-network.2.log (deflated 64%)
adding: vmware-network.3.log (deflated 64%)
adding: vmware-network.4.log (deflated 64%)
adding: vmware-network.log (deflated 65%)
adding: vmware-vmsvc-root.log (deflated 96%)
adding: vmware-vmtoolsd-root.log (deflated 77%)
[root@zaishu log]# ll log.zip
-rw-r–r-- 1 root root 32415 Oct 22 17:57 log.zip
例3. 使用 zip 命令压缩目录,需要使用“-r”选项:
[root@zaishu log]# zip -r tmp.zip /tmp/adding: tmp/ (stored 0%)adding: tmp/.ICE-unix/ (stored 0%)adding: tmp/.X11-unix/ (stored 0%)adding: tmp/.XIM-unix/ (stored 0%)adding: tmp/.font-unix/ (stored 0%)adding: tmp/.Test-unix/ (stored 0%)adding: tmp/vmware-root_539-4248811709/ (stored 0%)adding: tmp/cgicwjYI/ (stored 0%)adding: tmp/cgicwjYI/dummy.c (deflated 28%)adding: tmp/cgicwjYI/dummy.o (deflated 73%)adding: tmp/sess_d2a57fbc820a554efe86ed900d9f8f6d (deflated 44%)adding: tmp/vmware-root_530-2966037869/ (stored 0%)adding: tmp/vmware-root_527-4290035496/ (stored 0%)adding: tmp/mysql.sock.lock (stored 0%)adding: tmp/mysql.sock
zip warning: No such device or addresszip warning: could not open for reading: tmp/mysql.sockzip warning: Not all files were readablefiles/entries read: 14 (1.6K bytes) skipped: 1 (0 bytes)
[root@zaishu log]# ls tmp.zip
tmp.zip
5.unzip命令
unzip 命令可以查看和解压缩 zip 文件。
[root@localhost ~]# unzip [选项] 压缩包名
例1. 解压
不论是文件压缩包,还是目录压缩包,都可以直接解压缩:
[root@zaishu zaishu.cn]# unzip tmp.zip
Archive: tmp.zipcreating: tmp/creating: tmp/.ICE-unix/creating: tmp/.X11-unix/creating: tmp/.XIM-unix/creating: tmp/.font-unix/creating: tmp/.Test-unix/creating: tmp/vmware-root_539-4248811709/creating: tmp/cgicwjYI/inflating: tmp/cgicwjYI/dummy.c inflating: tmp/cgicwjYI/dummy.o inflating: tmp/sess_d2a57fbc820a554efe86ed900d9f8f6d creating: tmp/vmware-root_530-2966037869/creating: tmp/vmware-root_527-4290035496/extracting: tmp/mysql.sock.lock
例2. 解压到指定位置
使用 -d 选项指定解压位置,把压缩包解压到指定位置:
[root@zaishu log]# unzip -d /zaishu.cn/ tmp.zip
Archive: tmp.zipcreating: /zaishu.cn/tmp/creating: /zaishu.cn/tmp/.ICE-unix/creating: /zaishu.cn/tmp/.X11-unix/creating: /zaishu.cn/tmp/.XIM-unix/creating: /zaishu.cn/tmp/.font-unix/creating: /zaishu.cn/tmp/.Test-unix/creating: /zaishu.cn/tmp/vmware-root_539-4248811709/creating: /zaishu.cn/tmp/cgicwjYI/inflating: /zaishu.cn/tmp/cgicwjYI/dummy.c inflating: /zaishu.cn/tmp/cgicwjYI/dummy.o inflating: /zaishu.cn/tmp/sess_d2a57fbc820a554efe86ed900d9f8f6d creating: /zaishu.cn/tmp/vmware-root_530-2966037869/creating: /zaishu.cn/tmp/vmware-root_527-4290035496/extracting: /zaishu.cn/tmp/mysql.sock.lock
6.gzip命令
gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,生成的压缩包扩展名通常标记为“.gz”。gzip 命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件。
gzip 命令的基本格式如下:
[root@localhost ~]# gzip [选项] 源文件
命令中的源文件,当进行压缩操作时,指的是普通文件;当进行解压缩操作时,指的是压缩文件。
gzip 命令常用选项及含义
例 1 基本压缩。
gzip 指定源文件名即可。会压缩空间,但注意源文件会消失
[root@prometheus ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1380 Oct 17 11:27 anaconda-ks.cfg
[root@prometheus ~]# gzip anaconda-ks.cfg
[root@prometheus ~]# ls -l anaconda-ks.cfg.gz
-rw------- 1 root root 752 Oct 17 11:27 anaconda-ks.cfg.gz
例 2 保留源文件压缩。
在使用 gzip 不加任何参数压缩文件时,源文件会消失。
-c选项,不让压缩数据输出到屏幕上,而是重定向到压缩文件中,这样压缩文件的同时不删除源文件
[root@prometheus ~]# gzip -c anaconda-ks.cfg > anaconda-ks.cfg.gz
[root@prometheus ~]# ls anaconda-ks.cfg*
anaconda-ks.cfg anaconda-ks.cfg.gz
例 3 压缩目录
[root@zaishu.cn ~]# mkdir test
[root@zaishu.cn ~]# touch test/test1
[root@zaishu.cn ~]# touch test/test2
[root@zaishu.cn ~]# touch test/test3 #建立测试目录,并在里面建立几个测试文件
[root@zaishu.cn ~]# gzip -r test/
#压缩目录,并没有报错
[root@zaishu.cn ~]# ls
anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog test
#但是查看发现test目录依然存在,并没有变为压缩文件
[root@zaishu.cn ~]# ls test/
testl .gz test2.gz test3.gz
#原来gzip命令不会打包目录,而是把目录下所有的子文件分别压缩
在 Linux 中,打包和压缩是分开处理的。而 gzip 命令只会压缩,不能打包,所以才会出现没有打包目录,而只把目录下的文件进行压缩的情况。
7.gunzip命令
gunzip 解压被 gzip 压缩过的文件(扩展名为 .gz),也可以使用 gzip -d 解压。
gunzip 命令的基本格式为:
[root@localhost ~]# gunzip [选项] 文件
该命令常用的选项及含义
例1. 解压文件。
[root@prometheus log]# gunzip yum.log.gz
解压还可以使用 "gzip -d"命令,例如:
[root@prometheus log]# gzip -d yum.log.gz
例2. 要解压缩目录下的内容,则需使用 “-r” 选项
[root@prometheus ~]# gunzip -r test/
例3. zcat
如果压缩的是一个纯文本文件,则可以直接使用 zcat 命令在不解压缩的情况下查看这个文本文件中的内容。例如:
[root@prometheus log]# zcat yum.log.gz
Oct 17 11:47:28 Updated: 1:grub2-common-2.02-0.87.el7.centos.7.noarch
Oct 17 11:47:28 Updated: centos-release-7-9.2009.1.el7.centos.x86_64
Oct 17 11:47:29 Updated: 1:grub2-pc-modules-2.02-0.87.el7.centos.7.noarch
Oct 17 11:47:29 Updated: ca-certificates-2021.2.50-72.el7_9.noarch
Oct 17 11:47:30 Updated: tzdata-2021c-1.el7.noarch
Oct 17 11:47:30 Updated: nss-softokn-freebl-3.67.0-3.el7_9.x86_64
8.bzip2
bzip2也只能对文件进行压缩(或解压缩),对于目录只能压缩(或解压缩)该目录及子目录下的所有文件。命令执行完成后,会生成一个以“.bz2”为后缀的压缩包。
bzip2 命令的基本格式如下:
[root@localhost ~]# bzip2 [选项] 源文件
常用的选项及各自如下:
gzip 不会打包目录,但使用“-r”选项,则可以分别压缩目录下的每个文件;而 bzip2 命令则根本不支持压缩目录,没有“-r”选项。
例1. 直接压缩文件。
[root@zaishu.cn ~]# bzip2 anaconda-ks.cfg
#压缩成".bz2"格式
此压缩命令会在压缩的同时删除源文件。
例2. 压缩的同时保留源文件。
[root@zaishu.cn~]# bzip2 -k install.log.syslog
#压缩
[root@zaishu.cn ~]# ls
anaconda-ks.cfg.bz2 install.loginstalLlogsyslog install.logsyslogbz2
#压缩文件和源文件都存在
9.bunzip2
对于“.bz2”结尾的压缩文件,可以使用“bzip2 -d 压缩包名”命令,还可以使用 bunzip2 命令。
bunzip2 [选项] 源文件
此命令常用的选项以及各自的含义
[root@zaishu.cn~]# bunzip2 anaconda-ks.cfg.bz2
".bz2" 格式也可以使用 "bzip2 -d 压缩包" 命令来进行解压缩,例如:
[root@zaishu.cn~]# bzip2 -d install.log.syslog.bz2
和 ".gz" 格式一样,".bz2" 格式压缩的纯文本文件也可以不解压缩直接查看,使用的命令是 bzcat。例如:
[root@zaishu.cn~]# bzcat install.log.syslog.bz2
注意:如果找不到命令,请安装bzip2软件包 yum install bzip2
10. rar解压缩
- 下载软件包
[root@prometheus ~]# wget http://www.rarlab.com/rar/rarlinux-x64-5.0.0.tar.gz
- 安装软件包
[root@prometheus ~]# tar -zxvf rarlinux-x64-5.0.0.tar.gz
[root@prometheus rar]# make && make install
- 报错处理(非必须)
如果执行 rar 或者unrar 命令报错
rar: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by rar)
unrar: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by unrar)
执行下面的拷贝
cp rar_static /usr/local/bin/rar
cp rar_static /usr/local/bin/unrar
- 归档
[root@prometheus ~]# rar a tmp.rar /tmp/RAR 5.00 Copyright (c) 1993-2013 Alexander Roshal 22 Aug 2013
Trial version Type RAR -? for help
Evaluation copy. Please register.
Creating archive tmp.rar
Adding /tmp/yum.log OK
Adding /tmp/ks-script-V9ygsD OK
Done
- 解档
unrar e Archive.rar DestPath
[root@prometheus ~]# unrar e tmp.rar
UNRAR 5.00 freeware Copyright (c) 1993-2013 Alexander Roshal
Extracting from tmp.rar
Extracting yum.log OK
Extracting ks-script-V9ygsD OK
All OK
总结
通过本小节的讲解,可以熟练掌握在Linux中如何处理文件或目录的解压缩。友情链接
MySQL性能优化_原理_实战
1、MySQL在金融互联网行业的企业级安装部署
目录 | 章节 |
---|---|
版本说明 | 版本说明 |
安装MySQL规范 | 1 安装方式 2 安装用户 3 目录规范 |
MySQL 5.7 安装部署 | 1 操作系统配置 2 创建用户 3 创建目录 4 安装 5 配置文件 6 安装依赖包 7 配置环境变量 8 初始化数据库 9 重置密码 |
MySQL8 安装 | MySQL8 安装 |
源码安装 | 1 安装依赖包 2 生成源码包 3 创建用户 4 编译安装 5 配置数据库 6 连接mysql |
多实例部署及注意事项 | 1 多实例概念 2 多实例安装 3 mysqld_multi(多实例第二种安装方式) |
2、mysql启动关闭原理和实战_及常见错误排查
目录 | 章节 |
---|---|
生产中MySQL启动方式 | 1、 启动原理 2、参数文件默认位置及优先级 3、 以server方式启动 4、 mysqld_safe方式 5、 mysqld 方式 6、 systemctl 方式 |
关库 | 1、相关参数innodb_fast_shutdown 2、相关参数innodb_force_recovery 3、关闭mysql多种方式 |
常见MySQL启动失败案例 | 1.、目录权限 2、参数问题 3、配置文件 4、端口占用 5、误删二进制文件 6、undo表空间异常 7、binlog缓冲异常 |
MySQL启动失败排查方法 | MySQL启动失败排查方法 |
连接MySQL数据库的方式 | 连接MySQL数据库的方式 |
MySQL数据库用户安全策略 | 1、初始化数据库 2、修改密码 3、删除无用的用户 4、mysql_secure_installation |
找回丢失的用户密码 | 找回丢失的用户密码 |
3、MySQL字符集和校对规则
目录 | 章节 |
---|---|
MySQL字符集和校验规则 | MySQL字符集和校验规则 |
查看字符集方法 | 1、查看mysql支持的字符集 2、查看字符集的校对规则 3、查看当前数据库的字符集 4、查看当前数据库的校对规则 |
MySQL字符集设置 | 1、字符集设置层级关系 2、设置MySQL服务器级别字符集 3、设置创建对象的字符集 |
字符集案例 | 1、常用字符集每个汉字占用字节多少 2、大小案例 |
插入中文乱码解决 | 插入中文乱码解决 |
数据库常见字符集及如何选择字符集 | 数据库常见字符集及如何选择字符集 |
生产中如何彻底避免出现乱码 | 生产中如何彻底避免出现乱码 |
4、史上最详细的Mysql用户权原理和实战_生产案例
目录 | 章节 |
---|---|
访问控制 | 1、连接验证(阶段一) 2、允许的连接 3、连接优先级 4、请求验证(阶段二) |
用户管理 | 1、新增用户 2、修改用户 3、删除用户 4、查看用户 |
密码管理 | 1、密码修改 2、密码过期设置 3、set password 4、密码过期策略 5、密码插件 |
MySQL用户权限管理 | 1、权限粒度 2、显示账户权限 3、显示账户非权限属性 4、库级权限 5、表级权限 6、列级权限 7、权限回收 |
资源限制 | 1、用户创建指定配额 2、修改配额 |
MySQL用户权限案例 | 1、断掉已清理的用户 2、忘记密码 3、如何禁止一个ip段的某个用户登录 4、创建开发账号 5、创建复制账号 6、创建管理员账号 |
5、InnoDB引擎原理和实战_通俗易懂
目录 | 章节 |
---|---|
缓冲池 | 1、默认引擎 2、设置缓冲池大小 3、优化缓冲池 4、管理缓冲池 5、数据页类型 |
线程 | 1、IO线程 2、主线程 |
index page | index page |
insert buffer page | insert buffer page |
重做日志 | 重做日志 |
回滚日志 | 回滚日志 |
checkpoint,刷写脏页check point | checkpoint |
关键特性 | 1、插入缓冲 2、数据写入可靠性提升技术-doublewrite 3、自适应哈希索引-AHI |
innodb预读预写技术 | 预读写 |
6、MySQL文件详解_物理结构_逻辑结构_原理和案例
目录 | 章节 |
---|---|
参数和配置文件 | 1、文件位置 2、查找参数 3、参数类型 4、参数修改 5、示例一 6、示例二 7、注意事项 |
错误日志文件 | 错误日志 |
通用日志 | 通用日志 |
慢查询日志 | 慢日志 |
binlog | 1、记录什么 2、用途 3、开启和参数配置 4、日志查看 5、日志刷新 6、删除日志 7、日志分析(mysqlbinlog) 8、利用二进制日志文件恢复误删的表 |
InnoDB存储引擎表空间文件 | 表空间文件 |
主从同步相关文件 | 主从同步文件 |
套接字文件 | 套接字文件 |
pid 文件 | pid 文件 |
redo log | 1、redo初识 2、日志组 3、与oracle redo的区别 4、相关参数 5、和binlog的区别 6、redo 缓冲区(innodb_flush_log_at_trx_commit) |
InnoDB存储引擎逻辑结构 | 1、表空间 2、段 3、区 4、页 |
表碎片清理 | 1、判断是否有碎片 2、整理碎片 |
表空间文件迁移 | 1、需求 2、操作 |
7、SQL编程开发与优化事项
目录 | 章节 |
---|---|
常用语句 | 1、导入数据 2、库操作 3、表操作 4、数据操作 5、use性能影响 6、delete、truncate、drop的区别 7、SQL语句分类 |
数据类型与性能 | 1、整型 2、浮点型 3、字符串类型 4、日期类型 |
MySQL约束 | 1、unsigned/signed 2、not null 3、count(*) 为什么慢 4、default 5、unique 6、 auto_increment 7、primary key |
SQL编程高级 | 1、查询Syntax 2、查询列 3、where子句 4、group by … having子句 5、order by子句 6、limit子句(分页) 7、聚合函数 8、合并查询 9、多表查询 10、子查询 |
表的元数据库管理 | 1、统计应用库哪些表没有使用innodb存储引擎 2、如何查看表中是否有大对象 3、统计数据库大小 4、统计表的大小 |
8、MySQL索引原理和案例
目录 | 章节 |
---|---|
MySQL索引与二分查找法 | 1、什么是索引 2、索引的优缺点 3、索引的最大长度 4、二分查找法:折半查找法 5、mysql一张表存多少数据后,索引性能就会下降? |
剖析b+tree数据结构 | 1、B和B+树的区别 2、索引树高度 3、非叶子节点 4、指针 5、叶子节点 6、双向指针 7、b+tree插入操作 8、b+tree删除操作 |
相辅相成的聚集索引和辅助索引 | 1、聚集索引 2、聚集索引特点 3、聚集索引的优势 4、辅助索引 |
覆盖索引与回表查询 | 1、回表查询 2、覆盖索引 |
创建高性能的主键索引 | 1、主键索引创建的原则 2、主键索引的特点 3、为什么建议使用自增列作为主键 |
唯一索引与普通索引的性能差距 | 1、唯一索引特点 2、普通索引特点 3、唯一索引与普通索引的性能差距 |
前缀索引带来的性能影响 | 1、作用 2、坏处 |
如何使用联合索引 | 1、什么是联合索引 2、创建原则 3、排序 |
Online DDL影响数据库的性能和并发 | 1、5.6版本之前 2、新版本 3、online ddl语法 4、相关参数 5、示例 6、影响 |
pt-ocs原理与应用 | 1、安装pt-osc 2、pt-osc语法 3、案例 4、pt-osc原理 |
生产中索引的管理 | 1、建表时创建索引 2、建表后创建索引 3、查看索引 |
SQL语句无法使用索引的情况 | 1、where条件 2、联合索引 3、联表查询 4、其他情况 |
9、information_schema和sys中性能查看
目录 | 章节 |
---|---|
最常用的STATISTICS和TABLES | 1、STATISTICS:用于存放索引的信息 2、TABLES:用于存放库表的元数据信息 |
判断索引创建是否合理 | 1、选择性 2、索引创建的建议 |
检查联合索引创建是否合理 | 1、联合索引创建是否合理 2、有了联合索引(a,b),还需要单独创建a索引吗? |
如何查找冗余索引 | 查找冗余索引 |
查找产生额外排序的sql语句 | 额外排序的sql语句 |
查找产生临时表的sql语句 | 临时表的sql语句 |
全表扫描的sql语句 | 全表扫描的sql语句 |
统计无用的索引 | 无用的索引 |
索引统计信息 | 1、存储索引统计信息 2、如何查看索引统计信息 |
10、MySQL优化器算法与执行计划
目录 | 章节 |
---|---|
简单嵌套查询算法-simple nested-loop join | simple nested-loop join |
基于索引的嵌套查询算法-index nested-loop join | index nested-loop join |
基于块的嵌套查询算法- block nested-loop join | block nested-loop join |
Multi-Range Read | MRR |
bached key access join | BKA |
mysql三层体系结构 | 体系结构 |
Index Condition Pushdown | 索引条件下推 |
一条查询SQL语句是怎样运行的 | 查询SQL语句 |
一条更新SQL语句是怎样运行的 | 更新SQL语句 |
MySQL长连接与短连接的选择 | 1、相关参数 2、断开连接 |
执行计划explain | 1、语法 2、执行计划解析 |
11、MySQL查询优化
目录 | 章节 |
---|---|
MySQL查询优化技术 | 概览 |
子查询优化 | 1、优化器自动优化 2、优化措施:子查询合并 3、优化措施:子查询上拉技术 |
外连接消除 | 外连接消除 |
生产环境不使用join联表查询 | 不使用join |
group by分组优化 | 1、group by执行流程 2、为什么group by要创建临时表 |
order by排序优化 | 排序优化 |
MySQL性能抖动问题 | 性能抖动问题 |
count(*)优化 | count(*)优化 |
磁盘性能基准测试 | 1、安装sysbench 2、生成文件 3、测试文件io 4、清除文件 |
MySQL基准测试 | 1、生成数据 2、测试(读) 3、测试(写) 4、清理数据 |
12、事务原理和实战
目录 | 章节 |
---|---|
认识事务 | 认识事务 |
事务控制语句 | 1、开启事务 2、事务提交 3、事务回滚 |
事务的实现方式 | 1、原子性 2、一致性 3、隔离性 4、持久性 |
purge thread线程 | purge thread线程 |
事务统计QPS与TPS | 1、QPS 2、TPS |
事务隔离级别 | 1、隔离级别 2、查看隔离级别 3、设置隔离级别 4、不同隔离级别下会产生什么隔离效果 |
事务组提交group commit | 组提交 |
事务两阶段提交 | 两阶段提交 |
MVCC多版本并发控制 | 1、MVCC原理 2、MVCC案例 |
13、锁的原理和应用
目录 | 章节 |
---|---|
认识锁 | 1、锁的作用 2、加锁的过程 3、锁对象:事务 |
innodb行锁 | 1、行锁类型 2、共享锁(S锁) 3、排他锁(X锁) |
索引对行锁粒度的影响 | 1、行锁粒度有哪些 2、在RC隔离级别下不同索引产生的锁的范围 3、RR隔离级别下不同索引产生锁的范围 |
FTWRL全局读锁 | FTWRL全局读锁 |
innodb表锁 | innodb表锁 |
innodb意向锁与MDL锁 | 1、意向锁 2、意向锁作用 3、意向锁冲突情况 4、MDL锁 |
自增锁 | 自增锁 |
插入意向锁 | 插入意向锁 |
死锁 | 1、什么是死锁 2、相关参数 3、避免死锁 4、锁的状态 |
两阶段锁协议 | 两阶段锁协议 |
14、慢查询原理和实战_快速优化方法_优化工具
目录 | 章节 |
---|---|
1. 系统状态 | show status |
2. 慢查询 | 2.1 慢查询开启 2.2 简单示例 2.3 数据准备 |
3. mysqldumpslow | 3.1 语法 3.2 常见用法 |
4. pt-query-digest | 4.1 安装 4.2 语法选项 4.3 报告解读 4.4 用法示例 |
5. 优化工具(soar) | 5.1 安装配置 5.2 添加数据库 5.3 语句优化 |
15、备份恢复原理和实战_逻辑备份_物理备份_金融行业备份还原脚本
目录 | 章节 |
---|---|
1.生产中备份方式 | 1.1 物理备份与逻辑备份 1.2 联机与脱机备份 1.3 完整备份与增量备份 1.4 常用命令 |
2.mysqldump备份 | 2.1 相关参数 2.2 备份所有数据库 2.3 备份指定数据库 2.4 备份指定表 2.6 只导出结构 2.7 只导出数据 2.8 --tab(生成文本,类似load) 2.8 mysqldump原理 2.9 binlog异步备份 2.10 利用mysqldump全备及binlog恢复数据 |
3.xtrabackup | 3.1 Xtrabackup安装 3.2 原理 3.2 备份过程 3.4 恢复原理 3.3 相关参数 3.4 xtrabackup相关文件 3.5 备份示例 3.6 还原示例 |
4.binlog备份和恢复(数据库恢复) | 4.1 找到恢复时间点 4.2 增量恢复 |
5. 生产环境的备份恢复实战 | 5.1 实施部署 5.1.1 环境清单 5.1.2 备份目的 5.1.3 备份说明 5.1.4 实施步骤 5.1.5 全备脚本 5.1.6 差异备份脚本 5.2 实施部署备份还原 5.2.1 Xtraback还原全量/差异备份 5.2.2 故障点数据恢复 5.2.3 增量恢复 |
16、主从复制,gtid,并行复制_半同步复制_实操案例_常用命令_故障处理
目录 | 章节 |
---|---|
1.认识主从复制 | 1.1 主从复制原理深入讲解 1.2 主从复制相关参数 1.3.主从复制架构部署 1.4从库状态详解 1.5 .过滤复制 |
2 .gtid复制 | 2.1 什么是GTID? 2.2 GTID主从配置 2.5 gtid维护 2.4 GTID的特点 2.3 工作原理 2.4 gtid相关状态行和变量 |
3. 并行复制 | 3.1 延迟的原因 3.2 并行复制设置 3.3 查看并行复制 |
4. 增强半同步复制 | 4.1 异步复制 4.2 半同步复制 4.3 增强半同步复制 4.4 配置增强半同步 |
5. 案例 | 5.1 主库删除操作导致sql线程关闭案例 5.2 主从复制中断解决方案及案例 5.3 延迟复制 5.4 主库drop误操作利用延迟复制恢复案例 |
6 常用命令 | 6.1 启动线程 6.2 关闭线程 6.3 查看 6.4 重置 6.5 主从数据一致性校验 |
17、MySQL高可用和读写分离架构
MHA
目录 | 章节 |
---|---|
MHA | 介绍 |
架构和相关组件 | 架构和相关组件 |
工作流程 | 工作流程 |
MHA高可用架构部署 | 1、环境准备 2、软件安装 3、创建软链接 4、配置各节点互信 5、节点免密验证 6、mha管理用户 7、配置文件 8、状态检查 9、开启MHA |
主库宕机故障模拟及处理 | 主库宕机故障模拟及处理 |
MHA VIP自动切换 | VIP自动切换 |
MHA主从数据自动补足 | MHA主从数据自动补足 |
Atlas
目录 | 章节 |
---|---|
Atlas读写分离高性能架构 | 介绍 |
安装配置 | 安装配置 |
配置注解 | 配置注解 |
启动和关闭 | 启动和关闭 |
读写分离架构应用 | 读写分离架构应用 |
创建应用用户 | 创建应用用户 |
Atlas在线管理 | Atlas在线管理 |
读写分离避坑指南 | 读写分离避坑指南 |
18、MySQL分库分表_原理实战
目录 | 章节 |
---|---|
1.MyCAT分布式架构入门及双主架构 | 1.1 主从架构 1.2 MyCAT安装 1.3 启动和连接 1.4 配置文件介绍 |
2.MyCAT读写分离架构 | 2.1 架构说明 2.2 创建用户 2.3 schema.xml 2.4 连接说明 2.5 读写测试 2.6 当前是单节点 |
3.MyCAT高可用读写分离架构 | 3.1 架构说明 3.3 schema.xml(配置) 3.4 文件详解 3.4.1 schema标签 3.4.2 table标签 3.4.3 dataNode标签 3.4.4 dataHost 3.4 读写测试 3.5 故障转移 |
4.MyCAT垂直分表 | 4.1 架构 4.2 新建表 4.3 配置mycat 4.4 验证 |
5 MyCAT水平分表-范围分片 | 5.1 新建表 5.2 schema.xml 5.2 rule.xml 5.3 autopartition-long.txt 5.4 验证 |
6. MyCAT水平分表-取模分片 | 取模分片 |
7. MyCAT水平分表-枚举分片 | 枚举分片 |
8. MyCAT全局表与ER表 | 全局与ER表 |
8.1 全局表 | 8.1.1 特性 8.1.2 建表 8.1.3 配置 8.1.4 验证 8.1.5 分析总结(执行计划) |
8.2 ER表 | 8.2.1 特性 8.2.2 建表 8.2.3 配置 8.2.4 测试验证,子表是否跟随父表记录分片 8.2.5 分析总结(执行计划) |
19、基准性能测试_sysbench
目录 | 章节 |
---|---|
1. sysbench | 1.1 用途 1.2 安装 1.3 版本 1.4 查看帮助 1.5 测试过程阶段 |
2 CPU 性能测试 | 2.1 测试原理 2.2 查看帮助 2.3 测试 |
3. 内存性能测试 | 3.1 查看帮助信息 3.2 测试过程 |
4.磁盘性能基准测试 | 4.1 查看帮助 4.2 生成文件(prepare) 4.3 测试文件io(run) 4.4 结果分析 4.5 清除文件(cleanup) |
5. 线程测试 | 5.1 查看帮助信息 5.2 测试过程 |
6. MySQL基准测试 | 6.1 语法参数 6.2 生成数据 6.3 测试(读) 6.4 测试(写) 6.5 清理数据 |