总结 前言 CentOS7 安装MySQL8详细步骤 CentOS7 环境下MySQL常用命令 在mysql中有一个默认的数据表information_schema,information_schema...这张数据表保存了MySQL服务器所有数据库的信息。...如数据库名,数据库的表,表栏的数据类型与访问权限等。...再简单点,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在information_schema表里面,所以请勿删改此表...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
create table #Data(name varchar(100),row varchar(100),reserved varchar(100),data...
从全备份中,还原某一个库(假如要还原的库叫做hellodb)内容: # mysqldump -uroot -proot --all-databases --master-data=2 > all.sql # mysql... -uroot -proot -e 'create database hellodb;' 还原之前,首先要确保这个库的已经存在了,不然下面的命令会提示失败】 # mysql -uroot -proot... hellodb --one-database < all.sql # --one-database 可以简写成-o 从全备份中恢复出某一个库里的一张表(以取出hellodb.students为例)...d;q' all.sql 可以取出这张表的结构语句 # grep 'INSERT INTO `students`' all.sql 可取出students表中的内容
MySQL 8.0以前,存放在以.frm为后缀的文件里 MySQL 8.0以后,表结构定义存放在系统数据表中 --查看test库表t的信息 desc test.t; show columns from...表数据的存放位置由参数innodb_file_per_table控制: 设置为OFF,表的数据存放在系统共享表空间(ibdata为前缀的文件) 设置为ON,表数据存储在一个以.ibd为后缀,以表名为前缀的文件中...表数据单独存放成一个文件更容易管理,在我们执行drop table命令的时候,系统会直接删除这个文件,但如果是放在共享表空间中,即使表删掉空间也不会回收。 InnoDB的标记删除?...假设我们删除了R5这条记录,InnoDB引擎只会将R5这条记录标记为删除,并不是将页中该位置的数据置空,磁盘文件大小并不会缩小,这就是标记删除。...如何减少空洞,收缩表空间? 重建表。 如何重建表?
Oracle的数据存储有表空间、段、区、块、数据文件;MySQL InnoDB的存储管理也类似,但是MySQL增加了一个共享表空间和独立表空间的概念。...一、基本概念 共享表空间:Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制。...从Innodb的官方文档中可以看到,其表空间的最大限制为64TB,也就是说,Innodb的单表限制基本上也在64TB左右了,当然这个大小是包括这个表的所有索引等其他相关数据。...以下是摘自mysql官方的一些介绍: 共享表空间的优点 表空间可以分成多个文件存放到各个磁盘,所以表也就可以分成多个文件存放在磁盘上,表的大小不受磁盘大小的限制(很多文档描述有点问题)。...独立表空间的缺点 单表增加过大,当单表占用空间过大时,存储空间不足,只能从操作系统层面思考解决方法; 五、共享表空间和独立表空间之间的转换 查看当前数据库的表空间管理类型 show variables
Linux区分大小写规则 数据库名与表名严格区分大小写; 表的别名严格区分大小写; 列名与列的别名忽略大小写; 变量名严格区分大小写; windows下均不区分大小写。...配置支持大小写 Linux下配置my.cnf文件来决定是否支持大小写。...默认支持区分大小写,即等同于配置: lower_case_table_names=0 不区分大小写配置成如下即可: lower_case_table_names=1 一般情况下,此配置文件位于,/etc...通过vi命令进行修改,保存,重启mysql,即可生效。
临时表是执行sql语句过程中创建的中间过渡表,例如多表联合操作,就需要建立临时表 查看临时表的使用状态 mysql>show global status like 'created_tmp%'; created_tmp_tables...每次创建临时表时都会增加 created_tmp_disk_tables 如果是在磁盘上创建临时表,它会增加 created_tmp_files 表示MySQL服务创建的临时文件数 比较理想的配置是:...created_tmp_disk_tables / created_tmp_tables *100% <= 25% 再看一下临时表的配置: show variables like '%tmp_table_size...%'; tmp_table_size的默认值是32M,说明只有32M以下的临时表才能全部放在内存中,超过的就会用到硬盘临时表 可以适当增加此变量的值,例如 mysql> set session tmp_table_size
单表查询的语法及关键字执行的优先级 单表查询语法 SELECT DISTINCT 字段1,字段2......1.找到表:from 2.拿着where指定的约束条件,去文件/表中取出一条条记录 3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组 4.执行select(去重)...double 办公室 office int 部门编号 depart_id int #创建表...18,'20140512','operation',17000,403,3) ; #ps:如果在windows系统中,插入中文字符,select的结果为空白,可以将所有字符编码统一设置成gbk 准备表和记录...#1:单条件查询 SELECT emp_name FROM employee WHERE post='sale'; #2:多条件查询 SELECT emp_name
在MySQL数据库中,有一个内置的database叫做information_schema, 该数据库中的tables表包含了数据库中所有表的基本信息,tables表结构如下: mysql> use information_schema...; Database changed mysql> describe tables; +-----------------+---------------------+------+-----+----...-------------+------+-----+---------+-------+ 21 rows in set (0.03 sec) 下面介绍几个主要关键字段: TABLE_SCHEMA: 表所属的数据库名...TABLE_NAME: 表名 TABLE_ROWS: 表行数 DATA_LENGTH: 数据总大小 INDEX_LENGTH: 索引总大小 DATA_FREE: 磁盘碎片大小 查看表大小语句示例如下:...mysql> select table_schema, table_name, concat(truncate(sum(DATA_LENGTH)/1024/1024,2),' MB') as data_size
MySQL之单表查询 创建表 # 创建表 mysql> create table company.employee5( id int primary key AUTO_INCREMENT not...FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选...通过四则运算查询 mysql> SELECT name, salary, salary*14 FROM employee5; mysql> SELECT name, salary, salary*14...FROM employee5; 条件查询 a、语法 select * from 表名 where 条件 b、比较运算符 大于 小于 大于等于 小于等于 不等于...is null 判断非空:is not null g、优先级 小括号,not 比较运算符, 逻辑运算符 and比or优先级高,如果同时出现并希望先选or,需要结合()来使用 单条件查询
碎片产生的原因 (1)表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白、被留空,而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大; (2)当执行插入操作时...,MySQL会尝试使用空白空间,但如果某个空白空间一直没有被大小合适的数据占用,仍然无法将其彻底占用,就形成了碎片; (3)当MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分...; 例如: 一个表有1万行,每行10字节,会占用10万字节存储空间,执行删除操作,只留一行,实际内容只剩下10字节,但MySQL在读取时,仍看做是10万字节的表进行处理,所以,碎片越多,就会越来越影响查询性能...查看表碎片大小 (1)查看某个表的碎片大小 mysql> SHOW TABLE STATUS LIKE '表名'; 结果中’Data_free’列的值就是碎片大小 ?...where table_schema not in ('information_schema', 'mysql') and data_free > 0; 清除表碎片 (1)MyISAM表 mysql
独立表空间数据可以通过第三方工具进行分析和数据的抽取。还可以通过单独恢复独立表空间。 每个表文件表空间,允许通过监视表空间数据文件的大小来监视表大小。...因此,当结合此设置使用独立表空间时,可能会有性能改进。 共享表空间中的表的大小受到64TB表空间大小限制。...相比之下,每个文件-每个表的表空间都有64TB的大小限制,这为各个表提供了足够的空间来增加大小。 缺点: 对于独立表空间,每个表可能都有未使用的空间,如果管理不当,可能会导致空间浪费。...其大小为5个page大小,扩展名为.ibt。 ? 会话临时表空间保留了40万个空间id。...性能下降的程度取决于以下几个因素: undo表空间的数目 undo日志数量 撤消表空间大小 I/O子系统的速度 现有的长期运行事务 系统负载 在MySQL 8.0.21之前,在undo表空间截断操作期间会执行两个刷新操作
背景 经常使用 MySQL 的话,会发现 MySQL 数据文件的磁盘空间一般会不停的增长,而且有时候删了数据或者插入一批数据的时候,磁盘空间有时候还会毫无变化。...引发这个其妙现象的就是 MySQL 的表空间碎片。 什么是表空间碎片?...:删除了日志表的很多数据,但是 MySQL 的磁盘空间并没有降低。...怎么查看表空间碎片 MySQL 的系统表记录了表空间的使用情况,可以用如下查询检查: SELECT CONCAT(table_schema,'.'...FROM information_schema.TABLES WHERE table_schema = 'tablename' ORDER by data_free desc; data_free 指表空间碎片的总空间大小
表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白 当执行插入操作时,MySQL会尝试使用空白空间,但如果某个空白空间一直没有被大小合适的数据占用,就形成了碎片 当MySQL扫描表时,扫描的对象实际是包含碎片空间的...例如 一个表有1万行,每行10字节,会占用10万字节存储空间 执行删除操作,只留一行,实际内容只剩下10字节 但MySQL在读取时,仍看做是10万字节的表进行处理 所以,碎片越多,就会越来越影响查询性能...查看表碎片大小 01 查看某个表的碎片大小 mysql> SHOW TABLE STATUS LIKE '表名'; 结果中'Data_free'列的值就是碎片大小 02 列出所有已经产生碎片的表...table_schema not in ('information_schema', 'mysql') and data_free > 0; 清除表碎片 01 MyISAM表 mysql> optimize...table 表名 02 InnoDB表 mysql> alter table 表名 engine=InnoDB 建议 清除碎片操作会暂时锁表,数据量越大,耗费的时间越长 可以做个脚本,定期在访问低谷时间执行
从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 。此功能为物理表空间数据文件提供静态加密。.../keyring/keyring # 路径不存在,需要创建 innodb_file_per_table=1 # 只作用于独立表空间 1.2 创建加密所需的路径并配置权限...2 测试加密表空间 2.1 创建加密的新表 创建一张新表,并添加ENCRYPTION='Y' ,加密表空间 mysql> create table test1( id int primary key...另外,keyring_file_data也是可以动态调整的,比较简单,就不演示了 2.4 统计表空间加密的表 想要知道哪些表的表空间加密了,可以通过数据字典表里查看 mysql> SELECT TABLE_SCHEMA...更新后原先的表依旧可以正常方案,因为更新只会改变master encryption key 并重新加密 tablespace keys,不会对表空间重新加密或解密。
SELECT table_name, table_rows, data_length + index_length, CONCAT( ...
查看数据库占用空间 SELECT CONCAT(ROUND((sum(DATA_LENGTH)+sum(INDEX_LENGTH))/(1024*1024),2),'M') as 'Datebase Size...' FROM information_schema.TABLES where TABLE_SCHEMA='数据库名称'; 查看表占用空间 SELECT CONCAT(ROUND(SUM(DATA_LENGTH...' MB') AS 'Total Table Size' FROM information_schema.TABLES WHERE table_schema LIKE '数据库名称'; 查看索引占用空间...AS 'Total Index Size' FROM information_schema.TABLES WHERE table_schema LIKE '数据库名称'; 查看库中表详细信息 结果包括:表名...、记录数、此表占用空间、此表索引占用空间、此表总占用空间 SELECT CONCAT(table_schema,'.'
第一章:表空间的拓展 ① 查看剩余表空间大小 查询剩余表空间(单位:M),小于1M将不显示。...③ 通过新增表空间文件拓展表空间 拓展表空间方法,可以看到表空间文件 NCC_DATA01_1-23 共同组成了表空间 NCC_DATA01,所以我们直接在存储表空间路径的基础上再加上一个新的序列号表空间文件就好了...下面设置的是默认 500M 大小,以后剩余控件不足时,每次自动增加 200M。...ORALCE_HOME\ORADATA\NNC_DATA01_23.DBF' size 500M autoextend on next 200M maxsize unlimited; ④ 查看表空间已分配大小...查看表空间和已分配大小(单位:M) select tablespace_name, sum(bytes) / 1024 / 1024 from dba_data_files group by tablespace_name
加上 is null rang形成的扫描区间是多个点 或者 是范围查询index联合索引 且过滤条件不是联合索引的最左标的列 而且查询的数据不用回表all全表扫描的方式
数据操作 复制表结构和数据 复制已有表结构 CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 表名 {LIKE 旧表名 | (LIKE 旧表名) } 复制已有表数据 INSERT...[INTO] 数据表1 [(字段列表)] SELETC [(字段列表)] FROM 数据表名2; 注意:若数据表中含有主键,而主键具有唯一性,所以在数据复制时还要考虑主键冲突的问题 拓展 临时表的创建...: CREATE TEMPORARY TABLE 数据库.表名 (表单) 解决主键冲突 在数据表插入数据的时候,若表中的主键含有实际的业务意义 主键冲突更新 主键冲突更新操作是指,当插入数据的过程若发生主键冲突...分组与聚合函数 分组 在MySQL中,可以使用GROUP BY 根据一个或多个字段进行分组,字段值相同的为一组。另外对于分组的数据可以使用HAVING进行条件筛选。...SELETE [selete选项]字段列表 FROM 数据表名 [WHERE 条件表达式] GROUP BY 字段名; 分组排序 SELETE [selete选项] 字段列表 FROM 数据表名 [WHERE
领取专属 10元无门槛券
手把手带您无忧上云