MySQL
DB-Engineer
好好学习,天天向上
展开
-
InnoDB体系结构
InnoDB体系结构内存结构Buffer poolBuffer Pool LRU 算法配置 Buffer PoolChange BufferAdaptive Hash IndexRedo Log Buffer磁盘结构下图显示了构成InnoDB存储引擎体系结构的内存和磁盘结构。内存结构InnoDB内存包含Buffer Pool, Change Buffer, Adaptive Hash In...原创 2018-11-07 17:28:57 · 1629 阅读 · 0 评论 -
9. FILES
9. FILESFILES表提供有关存储MySQL表空间数据的文件的信息。FILES表提供有关InnoDB数据文件的信息。 在NDB Cluster中,此表还提供有关存储NDB Cluster Disk Data表的文件的信息。 有关InnoDB的其他信息,请参阅本节后面的InnoDB Notes; 有关NDB Cluster的其他信息,请参阅NDB Notes。FILE_ID...原创 2018-08-17 17:42:47 · 308 阅读 · 0 评论 -
8. EVENTS
8. EVENTSEVENTS表提供有关事件管理器事件的信息,这将在“使用事件调度程序”中讨论。EVENTS表有以下列: - EVENT_CATALOG:事件所属目录的名称。这个值总是def。 - EVENT_SCHEMA:事件所属的schema(数据库)的名称。 - EVENT_NAME:事件的名称。 - DEFINER:以“user_name”@“host_name”...原创 2018-08-17 17:34:40 · 332 阅读 · 0 评论 -
7. ENGINES
7. ENGINESENGINES表提供有关存储引擎的信息。 这对于检查是否支持存储引擎或查看默认引擎是什么特别有用。 INFORMATION_SCHEMA Name SHOW Name ENGINE Engine SUPPORT Support COMMENT Comment TRANSACTIONS Transacti...原创 2018-08-17 17:31:58 · 353 阅读 · 0 评论 -
6. COLUMN_PRIVILEGES
6. COLUMN_PRIVILEGES表COLUMN_PRIVILEGES提供有关列权限的信息。它从mysql.columns_priv系统表中获取其值 。表COLUMN_PRIVILEGES包含以下列:-GRANTEE:授予权限的帐户的名称,格式为“user_name”@“host_name”。 - TABLE_CATALOG:包含该列的表所属的目录的名称。这个值总是如此d...原创 2018-08-17 17:30:58 · 723 阅读 · 0 评论 -
5. COLUMNS
5. COLUMNS表COLUMNS提供表中列的信息。 INFORMATION_SCHEMA Name SHOW Name Remarks TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME Field ORDINAL_POSITIO...原创 2018-08-17 17:29:57 · 686 阅读 · 0 评论 -
4. COLLATION_CHARACTER_SET_APPLICABILITY
4. COLLATION_CHARACTER_SET_APPLICABILITY表COLLATION_CHARACTER_SET_APPLICABILITY表示哪种字符集适用于哪种排序规则。 INFORMATION_SCHEMA Name SHOW Name COLLATION_NAME Collation CHARACTER_SET_NAME ...原创 2018-08-17 17:28:46 · 388 阅读 · 0 评论 -
3. COLLATIONS
3. COLLATIONS表COLLATIONS提供有关每个字符集排序规则的信息。下表中SHOW Name对应SHOW COLLATION。 INFORMATION_SCHEMA Name SHOW Name Remarks COLLATION_NAME Collation CHARACTER_SET_NAME Charset My...原创 2018-08-17 17:27:21 · 930 阅读 · 0 评论 -
InnoDB INFORMATION_SCHEMA Temporary Table Info Table
InnoDB INFORMATION_SCHEMA Temporary Table Info TableINNODB_TEMP_TABLE_INFO提供有关InnoDB实例中当前活动的用户创建的InnoDB临时表的信息。它不提供有关优化程序使用的内部InnoDB临时表的信息。mysql> SHOW TABLES FROM INFORMATION_SCHEMA LIKE 'INNO...原创 2018-08-20 09:52:49 · 651 阅读 · 0 评论 -
InnoDB INFORMATION_SCHEMA System Tables
InnoDB INFORMATION_SCHEMA System Tables可以使用InnoDB INFORMATION_SCHEMA系统表提取有关InnoDB管理的schema对象的元数据。 此信息来自InnoDB内部系统表(也称为InnoDB数据字典),无法像常规InnoDB表那样直接查询。 传统上,您将使用“InnoDB监控”中的技术获取此类信息,设置InnoDB监控并解析SHOW E...原创 2018-08-20 09:47:21 · 2117 阅读 · 0 评论 -
InnoDB INFORMATION_SCHEMA Metrics Table
InnoDB INFORMATION_SCHEMA Metrics TableINNODB_METRICS表将所有InnoDB性能和资源相关计数器合并到一个INFORMATION_SCHEMA表中。15. INNODB_METRICSINNODB_METRICS表提供了各种InnoDB性能信息,补充了InnoDB的性能模式表的特定重点领域。通过简单查询,您可以检查系统的整体运行状况。通...原创 2018-08-20 09:30:34 · 434 阅读 · 0 评论 -
InnoDB INFORMATION_SCHEMA Lock Tables
InnoDB INFORMATION_SCHEMA Lock Tables三张InnoDB INFORMATION_SCHEMA表使您能够监视事务并诊断潜在的锁定问题:INNODB_TRX:提供有关InnoDB中当前正在执行的每个事务的信息,包括事务状态(例如,它是否正在运行或等待锁定),事务何时启动以及事务正在执行的特定SQL语句。INNODB_LOCKS:InnoDB中等待另一个事...原创 2018-08-20 09:24:57 · 1122 阅读 · 1 评论 -
InnoDB INFORMATION_SCHEMA FULLTEXT Index Tables
InnoDB INFORMATION_SCHEMA FULLTEXT Index Tables下表提供了FULLTEXT索引的元数据:mysql> SHOW TABLES FROM INFORMATION_SCHEMA LIKE 'INNODB_FT%';+-------------------------------------------+| Tables_in_INFOR...原创 2018-08-20 09:10:49 · 444 阅读 · 0 评论 -
InnoDB INFORMATION_SCHEMA Tables about Compression
InnoDB INFORMATION_SCHEMA Tables about Compression了解关于压缩的InnoDB INFORMATION_SCHEMA表,可以深入了解压缩的整体运行情况:INNODB_CMP和INNODB_CMP_RESET提供有关压缩操作数和执行压缩所花费的时间的信息。INNODB_CMPMEM和INNODB_CMP_RESET提供有关为压缩分配内存的方...原创 2018-08-20 09:01:52 · 295 阅读 · 0 评论 -
InnoDB INFORMATION_SCHEMA Buffer Pool Tables
InnoDB INFORMATION_SCHEMA Buffer Pool TablesInnoDB INFORMATION_SCHEMA缓冲池表提供有关InnoDB缓冲池中页面的缓冲池状态信息和元数据。 InnoDB INFORMATION_SCHEMA缓冲池表包括下面列出的表:mysql> SHOW TABLES FROM INFORMATION_SCHEMA LIKE ...原创 2018-08-20 08:53:20 · 647 阅读 · 0 评论 -
MySQL数据库文件
MySQL数据库文件本文档从MySQL数据库和存储引擎层面介绍各种类型的文件。参数文件(my.cnf)错误日志(error log)二进制日志文件(binary log)慢查询日志(slow log)全量日志(general log)审计日志(audit log)中继日志(relay log)Pid文件Socket文件表结构文件InnoDB存储引擎文件1. ...原创 2018-08-28 10:03:14 · 5124 阅读 · 0 评论 -
MySQL执行计划
MySQL执行计划使用EXPLAIN优化查询EXPLAIN输出格式扩展EXPLAIN输出格式EXPLAIN 语法{EXPLAIN | DESCRIBE | DESC} tbl_name [col_name | wild]{EXPLAIN | DESCRIBE | DESC} [explain_type] {explainable_stmt | F...原创 2018-08-31 14:59:58 · 3606 阅读 · 0 评论 -
基于Inception搭建MySQL SQL审核平台Yearing
# cmake -DWITH_DEBUG=OFF -DCMAKE_INSTALL_PREFIX=./mysql -DMYSQL_DATADIR=./mysql/data -DWITH_SSL=bundled -DCMAKE_BUILD_TYPE=RELEASE -DWITH_ZLIB=bundled -DMY_MAINTAINER_CXX_WARNINGS="-Wall -Wextra -Wunu...原创 2018-11-01 13:49:04 · 1516 阅读 · 0 评论 -
利用sysbench工具测试MHA
利用sysbench工具测试MHA1. sysbench准备数据2. sysbench开始压测3. master模拟意外宕机4. mysqldb2 上观察mha状态5. 手工failover切换master6. 原mysqldb1手工加入集群7. 手工在线切换1. sysbench准备数据sysbench /usr/share/sysbench/oltp_read_write.lua \--...原创 2018-10-29 16:02:51 · 342 阅读 · 0 评论 -
MySQL多源复制
MySQL多源复制1. 配置多源复制1.1 配置环境如下1.2 从库的重要参数配置1.3 在Master上导出需要同步的数据库1.4 在master上创建复制账号1.5 备份数据导入1.6 查看备份文件中Master1与Master2的binlog Pos位置1.7 Slave进行change master操作1.8 开启主从复制2. 监控多源复制MySQL多源复制使slave能够同时从多个源m...原创 2018-10-17 15:59:56 · 364 阅读 · 0 评论 -
MySQL binlog-server搭建
MySQL binlog-server搭建binlog在备份中起着至关重要的作用,备份binlog文件时,只能先在本地备份,然后才能传送到远程服务器上。从MySQL5.6版本后,可以利用mysqlbinlog命令把远程机器的日志备份到本地目录,这样就更加方便地实现binlog日志的安全备份。常用的参数-R | –read-from-remote-server 表示开启binlog...原创 2018-09-17 15:07:37 · 3788 阅读 · 0 评论 -
MySQL InnoDB 锁
MySQL InnoDB 锁介绍InnoDB的锁类型Shared and Exclusive 锁Intention 锁Record 锁Gap 锁Next-Key 锁Insert Intention 锁AUTO-INC 锁Predicate Locks for Spatial Indexes1. Shared and Exclusive 锁InnoDB实现标准的...原创 2018-09-06 16:50:57 · 363 阅读 · 0 评论 -
MySQL 查询优化之 Index Condition Pushdown
MySQL 优化程序之 Index Condition PushdownIndex Condition Pushdown (ICP)是MySQL使用索引从表中检索行数据的一种优化方式。禁用ICP时,存储引擎会通过遍历索引定位基表中的行,然后返回给Server层,再去为这些数据行进行where条件的过滤。启用ICP时,如果where条件可以使用索引,MySQL会把这部分过滤操作放到存储引...原创 2018-09-03 16:53:31 · 3880 阅读 · 0 评论 -
MySQL 查询优化之 Block Nested-Loop 与 Batched Key Access Joins
MySQL 查询优化之 Block Nested-Loop 与 Batched Key Access Joins在MySQL中,可以使用批量密钥访问(BKA)连接算法,该算法使用对连接表的索引访问和连接缓冲区。 BKA算法支持:内连接,外连接和半连接操作,包括嵌套外连接。 BKA的优点:更加高效的表扫描提高了连接性能。 此外,先前仅用于内连接的块嵌套循环(BNL)连接算法现已扩展,...原创 2018-09-05 16:25:27 · 3536 阅读 · 0 评论 -
MySQL中一条简单SQL的加锁分析
MySQL中一条简单SQL的加锁分析SQL1: select * from t1 where id = 10;(不加锁。因为MySQL是使用多版本并发控制的,读不加锁。)SQL2: delete from t1 where id = 10;(需根据多种情况进行分析)假设t1表上有索引,执行计划一定会选择使用索引进行过滤 (索引扫描),根据以下组合,来进行分析。组合一:id列是...原创 2018-09-08 17:06:22 · 1148 阅读 · 0 评论 -
MySQL备份恢复
MySQL备份恢复本文档主要围绕生产中经常使用的mysqldump、mydumper、xtrabackup等工具来进行备份恢复的学习。1. MySQL 的备份方式MySQL的备份方法,划分为如下三种:冷备份 冷备是指在数据库关闭的情况下进行备份,这种备份非常简单,只需关闭数据库,复制相关的物理文件即可。温备份 温备份也是在数据库运行的过程中进行备份,但是备份会对数据库操...原创 2018-09-11 15:45:55 · 2839 阅读 · 0 评论 -
MySQL 查询优化之 Multi-Range Read
MySQL 查询优化之 Multi-Range Read在存储引擎中未缓存的大表,使用辅助索引的range scan检索数据, 可能会导致基表进行许多随机磁盘访问。 通过磁盘扫描多范围读取(MRR)优化,可以减少随机I/O,并且将随机I/O转化为顺序I/O,提高查询效率MRR的工作原理根据辅助索引的叶子结点上找到的主键值得集合存储到read_rnd_buffer中,然后在该bu...原创 2018-09-04 15:40:32 · 1415 阅读 · 0 评论 -
MySQL 查询优化之 Index Merge
MySQL 优化程序之 Index Merge索引合并访问方法可以在查询中对一个表使用多个索引,对它们同时范围扫描,并且合并结果(intersects/unions/unions-of-intersections)。 此访问方法合并来自单个表的索引扫描; 它不会将扫描合并到多个表中。使用索引合并的示例查询:SELECT * FROM tbl_name WHERE key1 = 10...原创 2018-09-04 13:32:32 · 2272 阅读 · 0 评论 -
从多表连接后的select count(*)看待SQL优化
从多表连接后的select count(*)看待SQL优化一朋友问我,以下这SQL能直接改写成select count(*) from a吗?SELECT COUNT(*)FROM a LEFT JOIN b ON a.a1 = b.b1 LEFT JOIN c ON b.b1 = c.c1废话不多说,直接上实验。1. 准备数据创建测试表a,b,c,并...原创 2018-09-01 12:43:37 · 5045 阅读 · 0 评论 -
MySQL表碎片整理
MySQL表碎片整理计算碎片大小整理碎片1. 计算碎片大小要整理碎片,首先要了解碎片的计算方法。可以通过show table [from|in db_name] status like '%table_name%'命令查看:mysql> show table from employees status like 't1'\G******************...原创 2018-08-29 16:47:13 · 7349 阅读 · 0 评论 -
MySQL配置索引页的合并阈值
MySQL配置索引页的合并阈值如果删除行或者通过UPDATE操作缩短行 可以为索引页面配置MERGE_THRESHOLD值。 当delete与update缩短了行长度时,索引页的“page-full”百分比低于MERGE_THRESHOLD值,InnoDB会尝试将索引页与相邻索引页合并。 默认的MERGE_THRESHOLD值为50。 MERGE_THRESHOLD的最小值为1,最大值为50...原创 2018-08-29 15:46:41 · 711 阅读 · 0 评论 -
MySQL InnoDB配置统计信息
MySQL InnoDB配置统计信息配置持久化(Persistent)统计信息参数配置非持久化(Non-Persistent)统计信息参数Analyze Table复杂性长度本文档介绍如何为InnoDB表配置持久性和非持久性统计信息。持久化统计信息在服务器重新启动时保持不变,从而使执行计划和查询性能更加稳定。持久化统计信息还提供了控制和灵活性以及这些额外的好处:可以使用i...原创 2018-08-29 14:03:31 · 3207 阅读 · 0 评论 -
如何在MySQL中分配innodb_buffer_pool_size
如何在MySQL中分配innodb_buffer_pool_sizeinnodb_buffer_pool_size是整个MySQL服务器最重要的变量。1. 为什么需要innodb buffer pool?在MySQL5.5之前,广泛使用的和默认的存储引擎是MyISAM。MyISAM使用操作系统缓存来缓存数据。InnoDB需要innodb buffer pool中处理缓存。所以非常需...原创 2018-08-24 16:46:48 · 4197 阅读 · 1 评论 -
INFORMATION_SCHEMA InnoDB 表
INFORMATION_SCHEMA InnoDB Tables本节提供InnoDB INFORMATION_SCHEMA表的表定义。 有关相关信息和示例,请参见“InnoDB INFORMATION_SCHEMA表”。InnoDB INFORMATION_SCHEMA表可用于监控正在进行的InnoDB活动,在问题发生之前检测低效率,或解决性能和容量问题。 随着您的数据库变得越来越大,越来...原创 2018-08-20 08:45:11 · 603 阅读 · 0 评论 -
INFORMATION_SCHEMA 表
INFORMATION_SCHEMA 表INFORMATION_SCHEMA 简介 INFORMATION_SCHEMA.CHARACTER_SETS INFORMATION_SCHEMA.COLLATIONS INFORMAT...原创 2018-08-17 17:22:16 · 1540 阅读 · 0 评论 -
10. GLOBAL_STATUS 与 SESSION_STATUS
10. GLOBAL_STATUS 与 SESSION_STATUS 注意 从MySQL 5.7.6开始,show_compatibility_56系统变量的值会影响此处描述的表中的可用信息。 有关详细信息,请参见“服务器系统变量”中该变量的说明。 注意 从MySQL 5.7.6开始,此处描述的表中提供的信息也可从Performance Schema获得。 不推...原创 2018-08-18 22:11:49 · 1123 阅读 · 0 评论 -
1. 调整InnoDB系统表空间的大小
1. 调整InnoDB系统表空间的大小介绍如何增大或减小InnoDB系统表空间的大小 。1.1 增加InnoDB系统表空间大小增加InnoDB系统空间最简单的方法就是,在配置文件中配置autoextend 每次自动扩展的增量大小由参数 innodb_autoextend_increment 控制,单位为’M’。mysql> show variables like '...原创 2018-08-13 17:37:20 · 4623 阅读 · 0 评论 -
2. 更改InnoDB redo日志文件的数量或大小
2. 更改InnoDB redo日志文件的数量或大小要更改InnoDB 重做日志文件的数量或大小,请执行以下步骤:1)停止MySQL服务器,确保正常关闭且没有错误发生2) 编辑my.cnf以更改日志文件配置。要更改日志文件大小,请配置 innodb_log_file_size。要增加日志文件的数量,请进行配置 innodb_log_files_in_group。 mysql>...原创 2018-08-13 17:34:56 · 1913 阅读 · 0 评论 -
3. 对系统表空间使用Raw磁盘分区
3. 对系统表空间使用Raw磁盘分区可以将raw磁盘分区用作InnoDB系统表空间中的数据文件。此技术可在Windows和某些Linux和Unix系统上启用非缓冲I/O,而无需文件系统开销。使用和不使用raw分区执行测试以验证此更改是否实际上提高了系统性能。使用raw磁盘分区时,请确保运行MySQL服务器的用户标识具有该分区的读写权限。例如,如果以mysql用户身份运行服务器 ,则该分区上...原创 2018-08-13 17:32:58 · 728 阅读 · 0 评论 -
4. InnoDB表单独表空间
4. InnoDB表单独表空间从历史上看,所有InnoDB表和索引都存储在系统表空间中。这种单片方法的目标是完全专用于数据库处理的机器,精心规划的数据增长,其中任何分配给MySQL的磁盘存储都不会用于其他目的。 每张InnoDB表的单独表空间功能提供了一种更灵活的替代方案,其中每张InnoDB表及其索引都存储在一个单独的 .ibd数据文件中。每个这样的 .ibd数据文件代表一个单独的表空间...原创 2018-08-13 17:31:28 · 920 阅读 · 0 评论