mysql临时表

mysql ibtmp1使用空间突增反应的问题和处理--生产案例

廉价感情. 提交于 2019-12-26 12:45:50
mysql ibtmp1使用空间突增反应的问题和处理生产案例 一、问题现象: 某系统上线运行一段时间后管理员发现备份的数据才19G,但是ibtmp1 就149G,此文件占用大量空间。 提出以下几个问题: 1、是什么原因导致此问题。 2、如何释放: 3、如何避免此文件过大 系统背景架构介绍: 此系统使用mysql 5.7.17 版本,系统用于绩效考核数据分析,属于批处理系统。架构采用两个物理机Ha,加共享存储,mysql 放在共享存储上面。 二、是什么原因导致此问题 ibtmp1 介绍: 在mysql 5.7引用了ibtmp1,非压缩的、用户创建的临时表和磁盘上的内部临时表是在共享的临时表空间中创建。这innodb_temp_data_file_path配置选项定义临时表空间数据文件的相对路径、名称、大小和属性。 如果没有为指定值innodb_temp_data_file_path,默认行为是创建一个名为ibtmp1在innodb_data_home_dir略大于12MB的目录。 mysql> SELECT @@innodb_temp_data_file_path; ±-----------------------------+ | @@innodb_temp_data_file_path | ±-----------------------------+ | ibtmp1:12M

MySql 和Server Sql的差异

雨燕双飞 提交于 2019-12-25 03:11:21
MySql 和 Server Sql 的差异 1 、自增长列的插入: SQLServer 中可以不为自动增长列插入值, MySQL 中需要为自动增长列插入值。 2 、获取当前时间函数 : SQLServer 写法: getdate() MySQL 写法: now() 3 、从数据库定位到表。 Sqlserver 写法:库名 .dbo. 表名 ;或者:库名 .. 表名 (注:中间使用两个点) select password from Info.dbo.users where userName='boss' 或者 select password from Info..users where userName='boss' mysql 写法:库名 . 表名 select password from Info.users where userName='boss' 4 、判断是否存在某个数据库,若存在,则删除 Sqlserver 写法: IF DB_ID('users') IS NOT NULL DROP DATABASE users Mysql 写法: Drop DATABASEif exists users 拓展:若 sqlserver 数据库正在使用中,删除之前,先要把数据库变成 “ 单一用户 ” ,再删除 ALTER DATABASE users SET SINGLE_USER

查找Mysql慢查询Sql语句

流过昼夜 提交于 2019-12-24 23:36:26
一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。 2,long_query_time 当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。 3,slow_query_log_file 记录日志的文件名。 4,log_queries_not_using_indexes 这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。 二、检测mysql中sql语句的效率的方法 1、通过查询日志 (1)、Windows下开启MySQL慢查询 MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上 代码如下 log-slow-queries = F:/MySQL/log/mysqlslowquery。log long_query_time = 2 (2)、Linux下启用MySQL慢查询 MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上 代码如下 log-slow-queries=/data/mysqldata/slowquery。log long_query_time=2 说明 log-slow-queries = F:/MySQL/log

mysql数据库优化

折月煮酒 提交于 2019-12-24 17:48:08
前言 数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 1. 优化一览图 2. 优化 笔者将优化分为了两大类,软优化和硬优化,软优化一般是操作数据库即可,而硬优化则是操作服务器硬件及参数设置. 2.1 软优化 2.1.1 查询语句优化 1.首先我们可以用EXPLAIN或DESCRIBE(简写:DESC)命令分析一条查询语句的执行信息. 2.例: DESC SELECT * FROM `user` 显示: 其中会显示索引和查询数据读取数据条数等信息. 2.1.2 优化子查询 在MySQL中,尽量使用JOIN来代替子查询.因为子查询需要嵌套查询,嵌套查询时会建立一张临时表,临时表的建立和删除都会有较大的系统开销,而连接查询不会创建临时表,因此效率比嵌套子查询高. 2.1.3 使用索引 索引是提高数据库查询速度最重要的方法之一,关于索引可以参高笔者<MySQL数据库索引>一文,介绍比较详细,此处记录使用索引的三大注意事项: LIKE关键字匹配'%'开头的字符串,不会使用索引. OR关键字的两个字段必须都是用了索引,该查询才会使用索引. 使用多列索引必须满足最左匹配. 2.1.4 分解表 对于字段较多的表,如果某些字段使用频率较低,此时应当

视图的两种实现

匆匆过客 提交于 2019-12-22 18:02:45
视图 视图本身是一个虚拟表.不存放任何数据.在使用SQL语句访问视图的时候,它返回的数据是MySQL从其他表中生成的.视图和表是在同一个命名空间,不能对视图创建触发器. MySQL可以使用两种办法来处理视图,分别是 合并算法 和 临时表算法 . 如果使用的是临时表算法实现的视图, EXPLAIN中会显示为派生表(DERIVED) . 如果视图中包含GROUP BY,DISTINCT,任何聚合函数,UNION,子查询等.只要 无法在原表记录和视图记录中建立一一映射 的场景中,MySQL都将使用临时表算法来实现视图. 来源: CSDN 作者: 小锴的学习笔记 链接: https://blog.csdn.net/qq_40925525/article/details/103654149

mysql面试题狂刷(四)

丶灬走出姿态 提交于 2019-12-20 18:21:43
1.数据库完整性约束 实体完整性、参照完整性、用户自定义完整性 2.存储过程、触发器、函数的区别 触发器与存储过程非常相似,触发器也是SQL语句集,两者唯一的区别是触发器不能用EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发(激活)执行。触发器是在一个修改了指定表中的数据时执行的存储过程。通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以确保数据的完整性。触发器不同于存储过程,触发器主要是通过事件执行触发而被执行的,而存储过程可以通过存储过程名称名字而直接调用。当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQLSERVER就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合这些SQL语句所定义的规则。 本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2)对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 3

Mysql安装、配置、优化

心不动则不痛 提交于 2019-12-20 01:35:30
一: MYSQL安装和基本配置 在linux上安装,可以用包管理工具来安装,比较简单: RedHat 系列:yum -y install mysql mysql-server Debian系列:sudo apt-get install mysql mysql-server 安装之后不知道mysql装到哪了怎么办,用whereis mysql 命令来找一下。 先找到mysql的默认配置文件。一般来说,安装后有这么几个备选的配置: 1 my-huge.cnf my-innodb-heavy-4G.cnf my-large.cnf my-medium.cnf my-small.cnf  就2014年的机器配置来说,咱们直接用my-huge.cnf。把my-huge.cnf 复制到/etc/下,改名my.cnf。配置文件就有了, 然后启动mysql: /etc/init.d/mysqld start 。 安装之后默认的帐号是root, 密码为空。咱们要做的第一件事是改root密码。 进入mysql:mysql -uroot -p 选择数据库: use mysql 改密码: UPDATE user SET Password = PASSWORD(‘xxxx’) WHERE user = ‘root’; 刷新权限: FLUSH PRIVILEGES; 现在数据库装好了, 帐号和权限也设置了

PHP全栈学习笔记5

此生再无相见时 提交于 2019-12-19 21:13:05
php与mysql数据库,PHP支持很多数据库,与mysql为牛逼组合,mysql数据库的基础知识的掌握是由必要的,要了解如何操作mysql数据库,数据表的方法。 什么是数据库,数据库能做什么,数据库有什么好处,数据库的基础必备技术,备份和恢复的方法。 mysql的好处,功能强大,支持跨平台,运行速度快,支持面向对象,成本低,支持各种开发语言,数据库存储容量大,支持强大的内置函数。 启动MySQL服务器 net start mysql 连接数据库: mysql –u root –h127.0.0.1 –p password 断开MySQL服务器: quit; 停止MySQL服务器: net stop mysql; mysqladmin –uroot shutdown –proot 数据库的操作: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据表名 [(create_definition,…)][table_options] [select_statement] temporary 表示创建一个临时表 if not exists 表示表是否已经存在 create_definition 表的一些特性 select_statement 快速创建表 col_name type [NOT NULL | NULL] [DEFAULT default

MySQL 数据还原

…衆ロ難τιáo~ 提交于 2019-12-18 09:23:53
1.1 还原使用mysqldump命令备份的数据库的语法如下:   mysql -u root -p [dbname] < backup.sq   示例: mysql -u root -p < C:\backup.sql 1.2还原直接复制目录的备份    通过这种方式还原时,必须保证两个MySQL数据库的版本号是相同的。MyISAM类型的表有效,对于InnoDB类型的表不可用,InnoDB表的表空间不能直接复制 2. 还原增量binlog的方法 2.1 时间点的恢复建立在一下规则的基础上: 1 mysql服务器需要开启二进制日志--log-bin 查看所有binlog文件 mysql> SHOW BINARY LOGS; 查看当前binlog文件信息(包含文件名,当前位置等) mysql> SHOW MASTER STATUS; 2 mysqlbinlog工具将binary log文件由二进制转换为可读的文本文件,可以选择基于时间或位置的事件。 3 从binary log文件中执行事件会导致数据的修改,表示要重做数据。命令为: [root@localhost /]# mysqlbinlog binlog_files | mysql -u root -p 4 查看binlog的时间及位置信息我们可以讲binlog内容输出到终端或文本文件 [root@localhost /]#

centos7安装mysql

假装没事ソ 提交于 2019-12-17 05:57:30
进入mysql官网: https://dev.mysql.com/downloads/mysql/ 选择对应系统和版本的mysql进行下载 我下载的版本: 下载完之后,使用xshell连接远程服务器,使用rz命令上传mysql-5.7.28-linux-glibc2.12-x86_64.tar上传到/usr/local目录下 ##大硬盘挂载到了 /opt/mysql 目录下,因此将文件存储到此目录,新建以下目录 /opt/mysql/log ##存储日志文件 /opt/mysql/tmp ##存储的好像是临时文件 /opt/mysql/data ##存储数据库数据文件 卸载系统自带Mariadb rpm -qa | grep mariadb rpm -e --nodeps 文件名 tar -xvf mysql-5.7.28-linux-glibc2.12-x86_64.tar ##初次解压得到.gz文件,还有一个带test的文件,干嘛的也不咋清楚二次解压别搞错就行了 tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz ##再次解压得到真实文件 mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql ##将目录重命名为mysql 后面配置文件会用到目录 创建配置文件: vim /etc/my