`

(转)MySQL数据库InnoDB存储引擎的磁盘空间利用率分析

阅读更多
http://www.mysqlops.com/2012/04/27/%e6%9f%a5%e7%9c%8binnodb%e7%9a%84%e7%a3%81%e7%9b%98%e7%a9%ba%e9%97%b4%e5%88%a9%e7%94%a8%e7%8e%87.html

page利用率

主要是指btee里面每个page的使用被使用的空间大小。我们知道MySQL数据库InnoDB存储引擎默认一个page大小是16k。但实际使用情况不会总用满。我们定义为所有page的总使用字节除以总字节数。
在理论分析之前,我们要先弄个工具,查一下。

实例统计

写了一个简单的工具,读ibd文件上的每个page,算出每个page的实际使用字节,可以得到利用率。
我们找了线上一个库来模拟。表中有1个自增主键和3个非聚簇索引。不影响结论地简化为如下:


CREATE TABLE `ctu_factor_risk_99_03` (
`seq_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`a` varchar(32) DEFAULT NULL,
`b` varchar(32) DEFAULT NULL,
`c` varchar(32) DEFAULT NULL,
KEY a (a),
KEY bc (b,c),
KEY cb (c,b)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


插入数据中a,b,c均为长度为30字节的随机字符串。
显然主键和其他索引应该分开统计。统计结果发现,主键page利用率71%,其他索引利用率约52%。

简单分析
上面的结果很好理解。因为按照主键递增顺序插入数据,因此主键上数据“紧凑”。 而其他三个索引,则都是随机更新,需要不停地作索引节点分裂。

如何提升磁盘空间利用率

  回到最开始的问题。其实我们关心的,是InnoDB存储引擎为了保存相同的数据,用了多少空间。所以我们的问题变成,存储相同的数据,如何让占用的磁盘空间更小。

   有一个很直观的结论。把这些索引删了重建,必然会减少空间消耗。因为这个操作之后,在新的数据插入之前,这些索引也变成“紧凑的”。

      再建了一个与cb相同的索引,再跑,利用率居然高达98%。这个原理大家应该都知道了,只是量化一下而已。

         工具下载, 用法 ./ibd_used tb.ibd N1 N2 >/tmp/r 最后几行为各个索引的利用率统计值

分享到:
评论

相关推荐

    查看InnoDB的磁盘空间利用率

    了解InnoDB的磁盘空间利用率是数据库管理员优化性能、规划存储和监控数据库健康状况的重要环节。本篇文章将深入探讨如何查看InnoDB的磁盘空间利用率,并通过源码分析和使用工具的方法进行讲解。 首先,InnoDB存储...

    MySQL 和 InnoDB 性能

    ### MySQL与InnoDB性能分析 #### MySQL架构概览 MySQL是一种关系型数据库管理系统,由瑞典MySQL AB公司开发,目前由Oracle公司维护。MySQL的核心组成部分包括服务器端、存储引擎以及一系列支持服务。 - **服务器...

    03-MySQL逻辑架构和Innodb存储引擎1

    - **MyISAM**:适用于读密集型应用,不支持事务,但有较高的读取速度和空间利用率。 - **NDB(NDB Cluster)**:设计用于分布式环境,提供高可用性和容错性。 - **MEMORY**:数据存储在内存中,适用于临时表或对速度...

    优化MySQL数据库性能的八大妙手.rar

    定期执行OPTIMIZE TABLE命令整理表碎片,提高磁盘空间利用率。清理不再需要的临时表和日志,以释放资源。定期分析并更新统计信息,帮助MySQL做出更好的查询计划。 七、分区与分表 对于大数据量的表,可以考虑使用...

    MySQL存储引擎学习

    ARCHIVE存储引擎是压缩存储引擎,提供了非常高的存储空间利用率。CSV存储引擎是文本存储引擎,提供了非常高的数据交换能力。 在选择存储引擎时,需要考虑以下几个方面的因素:事务安全性、锁机制、索引支持、数据...

    数据库存储引擎技术的优劣势分析.docx

    例如,MySQL支持多种存储引擎,包括InnoDB、MyISAM、MEMORY等,每种引擎针对不同的应用场景有着各自的优势。 #### 三、常见存储引擎技术分析 ##### 3.1 B-Tree存储引擎 **定义与特点:** B-Tree是一种自平衡的树...

    Mysql数据库设计标准

    - 监控性能指标:如CPU利用率、内存使用、磁盘I/O等,以便及时发现和解决问题。 - 定期维护:包括清理过期数据、重建索引、优化表结构等。 9. **扩展性与高可用性**: - 主从复制:通过复制实现读写分离,提高...

    innodb存储引擎修改表共享空间为独立空间

    【MySQL InnoDB 存储引擎表空间...了解并正确配置InnoDB的表空间模式对于数据库管理员来说至关重要,它直接影响到数据库的性能、可维护性和资源利用率。根据实际需求选择合适的表空间模式,可以优化数据库的整体运作。

    MYSQL数据库技术分享.ppt

    MySQL数据库技术分享主要涵盖数据库参数优化、慢SQL定位与分析、SQL优化以及常见问题解答(FAQ)。在这篇分享中,我们将深入探讨MySQL的关键配置参数,这些参数对数据库性能有着重大影响。 首先,MySQL的参数分为几...

    MySQL数据库技术优化概述.docx

    此外,数据库的存储引擎选择也会影响性能,例如InnoDB适合事务处理,而MyISAM则在读取密集型应用中表现更好。 除了上述基础优化措施,还有一些高级优化技巧,如分区表、物化视图、并行查询、预编译SQL语句等。分区...

    高性能MySQL数据库系统

    监控MySQL的性能指标,如CPU使用率、磁盘I/O、内存使用等,使用工具如pt-query-digest、Percona Monitoring and Management等进行性能分析。 十、最新发展 随着MySQL的持续发展,了解InnoDB Cluster、MySQL Shell等...

    MySQL数据库服务器优化详细

    - **`tmp_table_size`**:用于存储临时表的内存空间大小,合理设置可避免频繁磁盘I/O,提高处理效率。 #### 批量插入与表优化 - **`bulk_insert_buffer_size`**:批量插入操作的缓冲区大小,对大量数据导入场景尤...

    MYSQL-innodb性能优化学习总结.pdf

    MySQL-InnoDB性能优化是数据库管理中的重要环节,它直接影响到系统的响应速度、并发处理能力和数据安全性。以下是对一些关键参数的详细解读: 1. **innodb_buffer_pool_size**:这是InnoDB存储引擎缓存数据和索引的...

    MYSQL存储引擎的选择.doc

    - 空间利用率:MyISAM通常比InnoDB占用更少的空间,但InnoDB能更好地管理磁盘空间。 - 读写速度:对于读多写少的场景,MyISAM可能更快;反之,InnoDB在写密集型应用中表现更好。 - 数据持久化:如果需要数据持久化,...

    MySQL数据库应用案例视频教程下载第16讲 性能优化.zip

    MySQL数据库性能优化是一个广泛的领域,涵盖了多个层面,包括SQL查询优化、索引策略、存储引擎选择、数据库架构设计以及硬件配置等。在本讲中,你将会学到: 1. SQL查询优化:理解SQL执行计划,识别慢查询并使用...

    mysql数据库my.cnf配置文件

    # InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间 # 独立表空间优点: # 1.每个表都有自已独立的表空间。 # 2.每个表的数据和索引都会存在自已的表空间中。 # 3.可以实现单表在不同的数据库中...

    MySQL数据库优化教学探讨.pdf

    MySQL 支持多种存储引擎,如 InnoDB、MyISAM、MEMORY 等,不同的存储引擎在事务处理、并发控制、数据持久化等方面有不同的特性和性能表现,这也是数据库优化的一个重要考虑因素。 在 MySQL 数据库优化中,有以下几...

    MySQL数据库性能诊断方案.pptx

    tail`、`vmstat`、`mpstat`、`pidstat`、`iostat`、`free -m`、`sar -n DEV`、`sar -n TCP,ETCP`、`top`,我们可以检查系统的整体负载、内存使用、CPU利用率、磁盘I/O以及网络状态,这些都能揭示可能影响MySQL性能...

    深入浅出 MySQL 数据库开发优化与管理维护

    7. **监控与调优**:通过监控工具分析MySQL的性能指标,如CPU使用率、内存消耗、磁盘I/O等,找出瓶颈并进行调优。 8. **安全与权限管理**:学习如何设置用户权限,实现数据的安全访问,以及如何保护数据库免受恶意...

Global site tag (gtag.js) - Google Analytics