摘要:
MySQL表碎片化(Table Fragmentation)的原因 关于MySQL中表碎片化(Table Fragmentation)产生的原因,简单总结一下,MySQL Engine不同,碎片化的原因可能也有所差别。这里没有深入理解、分析这些差别。此文仅以InnoDB引擎为主。总结如有不足或错误的地方,敬请指出。 InnoDB表的数据存储在页(page)中,每个页可以存放多条记录。这些记... 阅读全文
随笔分类 - 数据库技术(My SQL)
MySQL系统变量sql_safe_updates总结
2019-03-21 09:14 by 潇湘隐者, 3393 阅读, 收藏,
摘要:
MySQL系统变量sql_safe_updates总结 在MySQL中,系统变量sql_safe_updates是个非常有意思的系统变量,在Oracle和SQL Server中都没有见过这样的参数或功能。如果这个系统变量设置为1的话,意味着update与delete将会受到限制。个人臆测,之所以提供这个功能,一方面是要避免出现更新或删除数据时,忘记添加WHERE条件,导致数据被误更新或误删的情... 阅读全文
MySQL:select command denied to user for table 'proc'案例
2019-01-08 16:44 by 潇湘隐者, 34005 阅读, 收藏,
摘要:
使用EMS MySQL Manager Pro(3.4.0.1)连接MySQL 5.6.20时,报错:“SELECT command denied to user xxx@xxx.xxx.xxx.xxx for table 'proc' 很是纳闷,后面使用同样的权限,发现使用命令工具mysql -h xxxx -u username -p连接时不会报错。个人猜测是因为EMS MySQ... 阅读全文
MySQL慢查询日志释疑总结
2018-11-15 15:25 by 潇湘隐者, 11595 阅读, 收藏,
摘要:
之前写了一篇“MySQL慢查询日志总结“,总结了一些MySQL慢查询日志常用的相关知识,这里总结一下在工作当中遇到关于MySQL慢查询日志的相关细节问题,有些是释疑或自己有疑惑,自己测试验证、解惑方面的知识。此篇只是总结个人的一些经验,不足之处,敬请指正! 1: 为什么在慢查询日志里面出现Query_time小于long_query_time阀值的SQL语句呢? 例如,如下... 阅读全文
Can't create/write to file '/tmp/MLjnvU95' (Errcode: 13 - Permission denied)
2018-11-07 15:47 by 潇湘隐者, 11046 阅读, 收藏,
摘要:
今天一个同事反馈往一个MySQL数据库导入数据时,报“ERROR 1 (HY000): Can't create/write to file '/tmp/MLjnvU95' (Errcode: 13 - Permission denied)”这样的错误,如下所示: uery OK, 0 rows affected (0.03 sec) ERROR 1 (HY000): Can't cr... 阅读全文
MySQL 执行计划中Extra(Using where,Using index,Using index condition,Using index,Using where)的浅析
2018-11-05 14:49 by 潇湘隐者, 33938 阅读, 收藏,
摘要:
关于如何理解MySQL执行计划中Extra列的Using where、Using Index、Using index condition,Using index,Using where这四者的区别。首先,我们来看看官方文档关于三者的简单介绍(官方文档并没有介绍Using index,Using where这种情况): Using index (JSON property: using_... 阅读全文
Ubuntu上更改MySQL数据库数据存储目录
2018-10-15 23:37 by 潇湘隐者, 5528 阅读, 收藏,
摘要:
之前写过一篇博客“MySQL更改数据库数据存储目录”,当时的测试环境是RHEL和CentOS,谁想最近在Ubuntu下面更改MySQL数据库数据存储目录时遇到了之前未遇到的问题,之前的经验用不上了(或者说之前的总结不是太全面),修改完MySQL数据库数据存储目录后重启MySQL,发现MySQL服务无法启动。 root@mylnx2:/etc/mysql/mysql.conf.d# servi... 阅读全文
Ubuntu下面MySQL的参数文件my.cnf浅析
2018-10-07 00:09 by 潇湘隐者, 21982 阅读, 收藏,
摘要:
前几天刚接手一个MySQL数据,操作系统为Ubuntu 16.04.5 LTS, 数据库版本为5.7.23-0ubuntu0.16.04.1(APT方式安装的MySQL)。这个操作系统下的MySQL的配置文件my.cnf很多地方都让人有点不适应(跟之前的MySQL环境有些出入,之前都是维护RHEL、CentOS等操作系统环境下的MySQL)。遂研究总结了一下。具体如下所示: root@... 阅读全文
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
2018-09-20 14:45 by 潇湘隐者, 94344 阅读, 收藏,
摘要:
今天在MySQL 5.6版本的数据库中修改InnoDB表字段长度时遇到了"ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes"错误,第一次遇到这个错误,遂花了点学习、研究过、总结这个问题。 我们先来创建一个测试表,构造这样的错误。 mysql> use MyDB;Reading tab... 阅读全文
MySQL索引扩展(Index Extensions)学习总结
2018-09-12 16:19 by 潇湘隐者, 4073 阅读, 收藏,
摘要:
MySQL InnoDB的二级索引(Secondary Index)会自动补齐主键,将主键列追加到二级索引列后面。详细一点来说,InnoDB的二级索引(Secondary Index)除了存储索引列key值,还存储着主键的值(而不是指向主键的指针)。为什么这样做呢?因为InnoDB是以聚集索引方式组织数据的存储,即主键值相邻的数据行紧凑的存储在一起(索引组织表)。当数据行移动或者发生页分裂的时... 阅读全文
MySQL如何判别InnoDB表是独立表空间还是共享表空间
2018-08-21 23:37 by 潇湘隐者, 4433 阅读, 收藏,
摘要:
InnoDB采用按表空间(tablespace)的方式进行存储数据, 默认配置情况下会有一个初始大小为10MB, 名字为ibdata1的文件, 该文件就是默认的表空间文件(tablespce file),用户可以通过参数innodb_data_file_path对其进行设置,可以有多个数据文件,如果没有设置innodb_file_per_table的话, 那些Innodb存储类型的表的数据都... 阅读全文
MySQL Innodb数据库误删ibdata1后MySQL数据库的恢复案例
2018-08-19 19:04 by 潇湘隐者, 4847 阅读, 收藏,
摘要:
上周,以前公司的同事朋友找我帮忙,看看能否帮忙恢复一个MySQL 数据库,具体情况为:数据库版本为MySQL 5.6(具体版本不清楚),也不清楚具体的数据库引擎; 没有数据库备份,只剩下数据库下面的一些文件(frm、idb),具体原因是因为出现问题的时候,重装了MySQL,最要命的是ibdata1等文件也没有了,当然这中间细节过程如何,不清楚也不用去纠结了。大概就是这么一个情况。 因... 阅读全文
MySQL中Identifier Case Sensitivity
2018-08-15 22:51 by 潇湘隐者, 1936 阅读, 收藏,
摘要:
在MySQL当中,有可能遇到表名大小写敏感的问题。其实这个跟平台(操作系统)有关,也跟系统变量lower_case_table_names有关系。下面总结一下,有兴趣可以查看官方文档“Identifier Case Sensitivity” In MySQL, databases correspond to directories within the data directory. Each... 阅读全文
MySQL mysqlbinlog解析出的SQL语句被注释是怎么回事
2018-07-16 08:47 by 潇湘隐者, 12873 阅读, 收藏,
摘要:
MySQL mysqlbinlog解析出的SQL语句被注释是怎么回事 一网友反馈使用mysqlbinlog解析出的二进制日志中的内容中,有些SQL语句有#注释的情况,这个是怎么回事呢?我们通过实验来了解一下具体细节情况,如下所示,实验环境为5.6.20-enterprise-commercial-advanced-log # whereis mysqlbinlog mysqlbinlo... 阅读全文
MySQL 5.7开启二进制日志注意事项
2018-07-11 15:56 by 潇湘隐者, 3766 阅读, 收藏,
摘要:
最近才开始将部分MySQL 5.6升级到MySQL 5.7, 在开启MySQL的二进制日志时,发现MySQL 5.7 与MySQL 5.6已有细微区别。如果在my.cnf配置文件中,只设置了全局系统变量log_bin,没有设置全局系统变量server_id的话,那么MySQL启动不了,而且错误日志没有任何错误信息。 查了一下官方文档16.1.6.4 Binary Logging Options... 阅读全文
MySQL自增列(AUTO_INCREMENT)相关知识点总结
2018-07-11 15:32 by 潇湘隐者, 5777 阅读, 收藏,
摘要:
MySQL的自增列(AUTO_INCREMENT)和其它数据库的自增列对比,有很多特性和不同点(甚至不同存储引擎、不同版本也有一些不同的特性),让人感觉有点稍微复杂。下面我们从一些测试开始,来认识、了解一下这方面的特殊知识点: 自增列持久化问题 如果一个表拥有自增列,当前最大自增列值为9, 删除了自增列6、7、8、9的记录,重启MySQL服务后,再往表里面插入数据,自增列的值为6还... 阅读全文
Percona XtraBackup 备份还原篇
2018-06-27 23:34 by 潇湘隐者, 4679 阅读, 收藏,
摘要:
Percona XtraBackup 安装介绍篇已经对Percona XtraBackup的功能和安装做了比较详细的介绍,那么本篇我们直接进入主题,如何使用XtraBackup做备份、还原,下面主要介绍XtraBackup备份还原操作的细节和场景,疏漏之处难免存在,如有不足,敬请指出。本篇暂时不做原理介绍,后续篇章"Percona XtraBackup 原理分析篇"再做介绍。 ... 阅读全文
MySQL状态变量Aborted_connects与Aborted_clients浅析
2018-06-21 00:25 by 潇湘隐者, 7273 阅读, 收藏,
摘要:
关于MySQL的状态变量Aborted_clients & Aborted_connects分别代表的意义,以及哪些情况或因素会导致这些状态变量变化呢?下文通过实验测试来验证一下,首先我们来看看状态变量的描述: Aborted Connect Aborted Connect表示尝试连接到MySQL服务器失败的次数。这个状态变量可以结合host_cache表和其错误日志一起来分析问题... 阅读全文
ERROR 1044 (42000): Access denied for user 'root'@'localhost'
2018-06-19 14:53 by 潇湘隐者, 28473 阅读, 收藏,
摘要:
从供应商那边接手一个MySQL数据库(数据库版本为5.7.21 MySQL Community Server (GPL)),在创建账号时遇到了“ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database xxx”错误,如下所示 mysql> grant all on xxx.* to xxx@'192... 阅读全文
ERROR 3009 (HY000): Column count of mysql.user is wrong…..
2018-06-19 13:45 by 潇湘隐者, 7256 阅读, 收藏,
摘要:
在测试备份还原时,使用XtraBackup还原数据库后,创建一个测试账号时遇到了下面错误: mysql> grant all on house.* to test@'192.168.%' identified by 'test1249'; ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found ... 阅读全文
浙公网安备 33010602011771号