摘要:
在之前的版本中,安装新的版本mysql之后,mysql server在下一次启动时,会自动升级数据字典表,然后dba需要执行mysql_upgrade手动升级mysql schema中的系统表,以及其他schemas如sys schema、普通用户schemas下的表。 从mysql 8.0.16开 阅读全文
随笔分类 - MySQL
MySQL8新特性(1)--原子DDL
2019-09-05 13:55 by abce, 701 阅读, 收藏, 编辑
摘要:
mysql 8支持原子ddl。一个原子DDL语句包含数据字典更新、存储引擎操作、二进制日志写,事务要么被提交,应用修改被持持久化到数据字典、存储引擎和二进制日志,或者被回滚。 原子ddl是随着mysql 8中数据字典的引入被引入的。在早期版本,元数据被存储在元数据文件中,非事务型表中,存储引擎指定的 阅读全文
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'information_schema'
2019-06-17 11:23 by abce, 17127 阅读, 收藏, 编辑
摘要:
在处理这个问题(https://www.cnblogs.com/abclife/p/11038660.html)的时候,开发同学在最后修改视图的definer的时候又遇到了以下的报错信息: 数据库版本是:mysql 5.7.25。让他执行以下操作: 反馈说用户和权限都没啥问题,然后再次让其把执行报错 阅读全文
mysqldump: Got error: 1449: The user specified as a definer ('xxx'@'%') does not exist when using LOCK TABLES
2019-06-17 11:09 by abce, 6191 阅读, 收藏, 编辑
摘要:
开发同学说在测试环境使用mysqldump导出数据的时候遇到以下错误: 查看数据库中的用户,的确不存在: 因为库中的数据是从别的地方导入的。导入后就删除了上面的用户'xxx'@'%'。但是库中有一部分views是通过该用户创建的。 现在需要找出这些视图,并修改他们的定义者信息: 执行上面查询出语句, 阅读全文
semi-join子查询优化 -- semi-join Materialization策略
2019-05-21 13:42 by abce, 1510 阅读, 收藏, 编辑
摘要:
semi-join Materialization 是用于semi-join的一种特殊的子查询物化技术。通常包含两种策略:1.Materialization/lookup2.Materialization/scan 考虑一个查询欧洲有大城市的国家: 子查询是非相关子查询。也即是我们可以独立运行内查询 阅读全文
semi-join子查询优化 -- LooseScan策略
2019-05-20 23:00 by abce, 1707 阅读, 收藏, 编辑
摘要:
LooseScan执行semi-join子查询的一种策略。 我们将通过示例来演示这种松散(LooseScan)策略。假设,我们正在查找拥有卫星的国家。我们可以通过以下查询获得它们(为了简单起见,我们忽略了多个国家财团拥有的卫星): 假设,在Satellite.country_code上有一个索引。如 阅读全文
semi-join子查询优化 -- FirstMatch策略
2019-05-20 22:30 by abce, 1736 阅读, 收藏, 编辑
摘要:
FirstMatch执行semi-join子查询的一种策略。 类似于MySQL 5.x中如何执行in、exists子查询。 让我们以搜索拥有大城市的国家为例: 假设,我们的执行计划是找到欧洲的国家,然后,对于每个找到的国家,检查它是否有大城市。常规的inner join执行将如下所示: 由于德国有两 阅读全文
semi-join子查询优化 -- Duplicate Weedout策略
2019-05-20 17:51 by abce, 1603 阅读, 收藏, 编辑
摘要:
duplicate weedout是执行semi-join子查询的一种策略。 将semi-join作为一个常规的inner join。然后使用一个临时表,将重复的记录排除。 假设,你有一个查询,你在寻找一个大城市人口占总人口33%以上的国家: select * from Country where 阅读全文
mysql optimize table
2018-09-02 13:54 by abce, 7004 阅读, 收藏, 编辑
摘要:
语法结构: optimize table 会重组表数据和索引的物理存储,减少对存储空间使用和提升访问表时io效率。optimize table后,表的变化和存储引擎也有关。 以下场景使用 optimize table,和表的类型有关:1.innodb存储引擎+独立表空间,optimize table 阅读全文
sql中的left join以及on、where关键字的区别
2018-08-30 16:52 by abce, 8208 阅读, 收藏, 编辑
摘要:
创建两张表并插入一些数据 查看表中的数据 比较下面几组查询结果--如果你对left join足够熟悉的话,先不要看结果,是否可以直接说出下面查询的结果 如果on后面的条件是左表中的列(and leftTable.colName='***'),左表中满足条件的行和右表中的行进行匹配(根据on left 阅读全文
mysql出现unblock with 'mysqladmin flush-hosts'
2018-08-13 17:24 by abce, 47875 阅读, 收藏, 编辑
摘要:
朋友发来消息,说一个系统应用登录的时候提示连接超时,让帮忙处理一下。问他应用和数据库是否都正常,回复说数据库好像没有问题,但是应用日志报无法连接数据库。 数据库版本是:5.5.53 让他telnet数据库是否是通的,回复说不通,并发来了信息提示: 可以看出,产生的原因是: 同一个ip在短时间内产生太 阅读全文
Innotop的安装和使用
2018-04-03 14:12 by abce, 1492 阅读, 收藏, 编辑
摘要:
功能特点1.显示当前innodb的全部事务列表;2.显示当前正运行着的查询;3.显示当前锁和锁等等的列表;4.服务器状态和变量的摘要信息 显示了数值的相对变化幅度;5.有多种模式可用来显示Innodb 内部信息,如缓冲区、死锁、外键错误、I/O情况、行操作、信号量等。6.复制健康,将主机和从机的状态 阅读全文
mysql 5.7中的threads
2018-02-27 14:57 by abce, 1228 阅读, 收藏, 编辑
摘要:
通过threads表中的信息,结合iotop -u mysql 的输出,就可以知道某个线程的io使用情况 5.6中没有线程对应的THREAD_OS_ID的时候,可以使用show engine innodb status 阅读全文
mysqlcheck与myisamchk的区别
2018-01-15 16:15 by abce, 2644 阅读, 收藏, 编辑
摘要:
mysqlcheck和myisamchk都可以用来检测和修复表。(主要是MyISAM表)但是也有以下不同点:1.都可以检查、分析和修复myisam表。但是mysqlcheck也可以检查、分析innodb表;myisamchk可以enabling、disabling索引。2.mysqlcheck是客户 阅读全文
MySQL权限和用户安全
2018-01-12 12:38 by abce, 432 阅读, 收藏, 编辑
摘要:
MySQL访问控制分为两个阶段阶段1: 检查用户是否可以连接到mysql server 阶段2: 检查用户执行的sql是否已经被授权 阅读全文
mysql_config_editor
2018-01-12 11:06 by abce, 676 阅读, 收藏, 编辑
摘要:
mysql_config_editor是MySQL5.6.6中引入的,在5.6.10中正式GA。借助mysql_config_editor工具将登陆MySQL服务的认证信息加密保存在.mylogin.cnf文件(默认位于用户主目录) 。之后,MySQL客户端工具可通过读取该加密文件连接MySQL,避 阅读全文
MySQL 5.6新特性 -- crash-safe replication
2018-01-08 13:00 by abce, 1207 阅读, 收藏, 编辑
摘要:
在slave上有两个线程:io线程和sql线程io线程接收master的二进制日志信息并写入到本地的relay log中;sql线程执行本地relay log中的信息。io线程读取到的二进制日志当前位置信息写在master.info中;sql线程读取到的当前relay log位置信息写在realy- 阅读全文
MySQL -- show processlist
2017-11-07 12:47 by abce, 545 阅读, 收藏, 编辑
摘要:
说明: 其中state的状态十分关键,下表列出state主要状态和描述: 当线程创建一个表(包括临时表),创建函数结束时的状态。即使因为某些原因创建失败,也会显示。 刷新表数据到磁盘并关闭表。这个状态一般比较快,否则就该查看一下磁盘的使用了 线程在执行alter table命令。发生在表结构已经修改 阅读全文
MySQL 5.6新特性 -- Multi-Range Read
2017-11-06 15:42 by abce, 742 阅读, 收藏, 编辑
摘要:
如果基表很大,数据没有被缓存,在二级索引上使用范围扫描读取行可能会导致大量的随机磁盘访问。使用Multi-Range Read新特性,mysql可以减少对磁盘的随机读的次数:首先,mysql只是扫描索引,收集相关行的keys;然后,将收集到的keys进行排序;最后通过有序的主键去访问基表。 Mult 阅读全文