mysql临时表

MySQL 8.0.0 版本发布,亮点都在这了!

那年仲夏 提交于 2020-01-29 01:28:23
导读 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 可能有人会惊奇MySQL为何从5.x一下跳跃到了8.0。事实上,MySQL 5.x系列已经延续了很多年,从被Oracle收购之前就是5.1,而收购之后一直维持在5.x,比如5.5,5.6,5.7等等。其实,如果按照原本的发布节奏,可以把5.6.x当成6.x,5.7.x当成7.x。所以,只是换了版本命名方式而已。 MySQL 8.0.0亮点 事务住数据字典,完全脱离了MylSAM存储引擎 真正将数据字典放到了1nnoOB中的一些表中,夕J长下再需要FRM、TRG、pAR文件啦!Inf rmationSchema现在以数据字典表的一个视图出现。原则上可以完全不需要MylSAM数据 表类型了,所有的系统表都可以放到Inn0OB之中。 SQL角色 角色是一系列叹限的集台。可以创建角色,给莫个用户授子和去除角色。这对于权限管理 很方便。 uttsmb4字芍集将成为默认字符集,并支持Unicode 9 默认字符集将从1atinl改为uttsmb4,默认走序collatlon将从latlnl_swedish

MySQL性能状态查看方式

走远了吗. 提交于 2020-01-28 14:10:17
1. QPS(每秒Query量) QPS = Questions(or Queries) / seconds mysql > show global status like 'Question%'; 2. TPS(每秒事务量) TPS = (Com_commit + Com_rollback) / seconds mysql > show global status like 'Com_commit'; mysql > show global status like 'Com_rollback'; 3. key Buffer 命中率 mysql>show global status like 'key%'; key_buffer_read_hits = (1-key_reads / key_read_requests) * 100% key_buffer_write_hits = (1-key_writes / key_write_requests) * 100% 4. InnoDB Buffer命中率 mysql> show status like 'innodb_buffer_pool_read%'; innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read

MySQL information_schema表查询导致内存暴涨

冷暖自知 提交于 2020-01-26 13:54:15
case:下面的一条sql语句,导致mysql实例内存暴涨:    select * from tables where table_name not in(select table_name from partitions group by table_name having count(*)>1 );    mysql 5.5, 1w+的innodb表。 下面看下调查的结果: 1. sql的执行情况以及内存分配: step1 : 构造information_schema.tables临时表 1.1 构造临时表tables结构: 说明:func=create_schema_table; engine=heap 内存: tables是heap引擎的表,临时构造,使用堆内存;语句结束close_tmp_tables释放。 1.2 填充临时表tables数据:一共由三类表来填充tables的内存 1. memory 引擎: 说明:information_schema下的表,创建临时table, 内存: 使用堆内存,填充完数据后 close_tmp_tables,释放内存。 2. mysiam 引擎: 说明:information_schema下一部分表,是mysiam引擎的临时表。 内存: 使用堆内存,创建磁盘临时文件,close_tmp_tables,释放内存,删除临时文件。 3.

mySql基础

半腔热情 提交于 2020-01-24 14:24:10
sudo find / -name php.ini 如果没找到 cd /Private/etc 可以找到php.ini.default cp php.ini.default php.ini 复制一份 2017-03-23T03:03:00.557711Z 1 [Note] A temporary password is generated for root@localhost: nRWip6C+C3q& If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual. 现在你就可以通过mysql -uroot -p登录mysql了,会让你输入密码,就是pic3上的>fj... 登录成功后,你可以通过下面的命令修改密码 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); mysqladmin -u root -p create RUNOOB 以上命令执行成功后会创建 MySQL 数据库 RUNOOB。 [root@host]# mysqladmin -u root -p drop RUNOOBEnter password:******

MySQL基础笔记

做~自己de王妃 提交于 2020-01-24 14:23:44
本文摘自https://blog.csdn.net/u010947693/article/details/54863726,仅供学习参考使用 连接数据库: 一般都是一个API函数(不同语言不同,但参数相似)XXX_connect( server,user,passwd,newlink,clientflag); 创建与删除一个数据库 在PHP是使用mysql_query(sql:是SQL的查询命令,connection:可选为SQL标识符) 选择数据库:mysql_select_db(dbname:数据名,connection:可选规定MySQL连接) MYSQL的数据类型有 1,2,3,4,8,字节的整型,还有浮点,双精型。 创建数据表 CREAT TABLE tablename(colum_name :属性名 column_type:属性类型); 删除数据表 DROP TABLE tablename; 插入数据: INSERT INTO table_name(field1,field2,field2 ....)VALUES(value1 ,value2,value,“value3””)value就是数据的值。 查询数据: SELECT column_name,column_name FROM tablename [WHERE Clause][OFFSET M][LIMIT N]

MySQL SQL优化

匆匆过客 提交于 2020-01-20 15:47:38
SQL优化大全 索引优化 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则引擎将放弃使用索引而进行全表扫描。 4.应尽量避免在 where 子句中使用or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num=10 or num=20可以这样查询:select id from t where num=10 union all select id from t where num=20 http://5.in 和 not in 也要慎用,否则会导致全表扫描,如:select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了:select id from t where num between 1 and 3 6

MySQL源码安装参数详解如下

Deadly 提交于 2020-01-16 11:25:44
参数说明 cmake. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 cmake编译 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock 通信文件位置 -DMYSQL_DATADIR=/data/myql mysql数据存放路径 -DSYSCONFDIR=/etc 配置文件路径 -DMYSQL_USER=mysql mysql运行用户 -DMYSQL_TCP_PORT=3306 mysql监听端口 -DWITH_XTRADB_STORAGE_ENGINE=1 开启XtraDB引擎支持 -DWITH_INNOBASE_STORAGE_ENGINE=1 开启InnoDB引擎支持 -DWITH_PARTITION_STORAGE_ENGINE=1 开启Partition引擎支持 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 开启BlackHole引擎支持 -DWITH_MYISAM_STORAGE_ENGINE=1 开启MyISAM引擎支持 -DWITH_READLINE=1 启用快捷键功能 -DENABLED_LOCAL_INFILE=1 允许从本地导入数据 -DWITH_EXTRA_CHARSETS=1 支持额外的字符集 -DDEFAULT_CHARSET=utf8 默认字符集UTF-8 -DDEFAULT

MySQL 5.6 Online DDL

社会主义新天地 提交于 2020-01-16 09:01:28
一 .Fast index Creation MySQL 5.5和更高版本并且MySQL 5.1 innodb plugin支持 Fast index Creation ,对于之前的版本对于索引的添加或删除这类DDL操作,MySQL数据库的操作过程为如下: (1)首先创建新的临时表,表结构通过命令ALTAR TABLE新定义的结构 (2)然后把原表中数据导入到临时表 (3)删除原表 (4)最后把临时表重命名为原来的表名 上述过程我们不难发现,若我们对一张大表进行索引的添加或者删除,需要很长的时间,致命的是若有大量的访问请求,意味着无法提供服务。 innodb存储引擎从1.0.x版本开始支持Fast index Creation(快速索引创建)。简称FIC。对于辅助索引的创建,会对创建索引的表加一个S锁。在创建的过程中,不需要重建表,因此速度有明显提升。对于删除辅助索引innodb存储引擎只需要更新内部视图,并将辅助索引的空间标记为可用,同时删除MySQL 数据库内部视图上对该表的索引定义即可。特别需要注意的时,临时表的创建路径是通过参数tmpdir设置的。必须确保tmpdir有足够的空间,否则将会导致辅助索引创建失败。由于在创建辅助索引时加的是S锁,所以在这过程中只能对该表进行读操作,若有事务需要对该表进行写操作,那么数据库服务同样不可用。 需要注意的是,FIC方式只限定于辅助索引

MySQL online ddl原理

人盡茶涼 提交于 2020-01-16 09:00:44
背景 dba的日常工作肯定有一项是ddl变更,ddl变更会锁表,这个可以说是dba心中永远的痛,特别是执行ddl变更,导致库上大量线程处于“Waiting for meta data lock”状态的时候。因此mysql 5.6的online ddl特性是dba们最期待的新特性,这个特性解决了执行ddl锁表的问题,保证了在进行表变更时,不会堵塞线上业务读写,保障在变更时,库依然能正常对外提供访问。网上关于online ddl的文章很多,但涉及原理的很少,都是介绍语法之类的,本文将详细介绍online ddl的原理,知其然,更要知其所以然。 ddl实现方式 5.6 online ddl推出以前,执行ddl主要有两种方式copy方式和inplace方式,inplace方式又称为(fast index creation)。相对于copy方式,inplace方式不拷贝数据,因此较快。但是这种方式仅支持添加、删除索引两种方式,而且与copy方式一样需要全程锁表,实用性不是很强。下面以加索引为例,简单介绍这两种方式的实现流程。 copy方式 (1).新建带索引的临时表 (2).锁原表,禁止DML,允许查询 (3).将原表数据拷贝到临时表(无排序,一行一行拷贝) (4).进行rename,升级字典锁,禁止读写 (5).完成创建索引操作 inplace方式 (1).新建索引的数据字典 (2).锁表

mysql 索引优化 btree hash rtree

天涯浪子 提交于 2020-01-09 01:20:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一:mysql里目前只支持4种索引分别是:b-tree,full-text,hash以及r-tree索引 b-tree索引应该是mysql里最广泛的索引的了,除了archive,基本所有的存储引擎都支持它. 1.b-tree在myisam里的形式和innodb稍有不同 在innodb里面有两种形态:其一是primary key形态其leaf node里存放的是数据.而且不仅存放了索引键的数据,还存放了其他字段的数据.其二是secondary index,其leaf node和普通的b-tree差不多,只是还存放了指向主键的信息. 而在myisam里,主键和其他的并没有太大区别.不过和innodb不太一样的地方是,在myisam里,leaf node里存放的不是主键的信息,存的是指向数据文件里的对应数据行的信息. 2.hash索引,目前我所知道的就只有memory和ndb cluster支持这种索引. hash索引由于其结构,所以在每次查询的时候直接一次到位不行b-tree那样,一点点的前进,所以hash索引的效率高于b-tree.但hash也有缺点,主要如下: (1)由于存放的是hash值,所以仅支持<=>以及in操作. (2)hash索引无法通过操作索引来排序,这是因为存放的时候经过hash计算