热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQLrockdb性能_使用TerarkDB提升MySQL的性能.pdf

使用TerarkDB提升MyRocks的性能——随机读场景下的MySQL性能优化雷鹏pengCTO大纲lMyRocks简介l为什么选择MyRocksl传统数据库的块压缩l硬件的发展

使用TerarkDB提升MyRocks的性能

——随机读场景下的 MySQL性能优化

雷鹏 peng@

CTO

大纲

l MyRocks简介

l 为什么选择 MyRocks

l 传统数据库的块压缩

l 硬件的发展趋势

l TerarkDB 和 MyRocks 的关系

l TerarkDB 的原理、优势、劣势

l 新的问题,以及优化建议

MyRocks简介

l MyRocks=MySQL+RocksDB(存储引擎)

l 基于 MySQL-5.6 :代码(MySQL onTerarkDB)

Ø 增加了一些 MySQL-5.7 的 Feature

Ø 增加了一些针对 RocksDB特有的语法和功能

Ø 有部分功能不支持,详见:MyRocks-limitations

l 深入了解 MyRocks :MyRocks DeepDive

MyRocks主要功能

l 类似 InnoDB 的功能

l 事务

Ø 基于 MVCC

Ø ReadCommitted,RepeatableRead(PostgreSQL-style)

l 在线备份

Ø 逻辑备份(使用 mysqldump)

Ø 二进制备份( 使用 myrocks_hotbackup )

为什么选择MyRocks

l 成熟稳定,满足绝大部分功能需求

l 使用单一 DB,适合云 DB多租户场景

l 基于 RocksDB,直接兼容TerarkDB

l 基于 LSM,对 SSD友好

传统数据库都使用块压缩——

l InnoDB

l LevelDB/RocksDB...

l TukoDB

块压缩有着难以克服的,

l WiredTiger 固有的缺陷,

l Cassandra/ScyllaDB 我们看看它的原理,

l CouchDB 分析一下——

l HBase

l ……

块压缩的原理

l 多条数据打包成一个块,索引定位到块

Ø 增大块:索引更小,单个块中的数据条数更多,无效解压更多

Ø 减小块:索引更大,压缩算法无法有效工作,压缩率更低

l 块缓存 DirectIO导致缓存中只有

问题 1

解压后的数据,一定程

太慢了——

Ø 每次访问都解压一个块,

度上减小了内存利用率

Ø 解压出来的块放入缓存

问题 2 DirectIO需要对齐访问,

Ø 操作系统还有文件缓存 双缓存问题!

使用DirectIO 最坏情况下需要跨边界

(压缩的数据保存在文件中) 多读两个块

硬件的发展趋势

l 机械硬盘的 容量/价格 仍有巨大优势

Ø 更耐写,更安全;氦气硬盘,HAMR 技术……

l SSD越来越便宜,NVMe/PCIe 已广泛应用

Ø 不耐写,写坏了数据就永久丢失

Ø NVMe/ PCIe 接口的 SSD更快,延迟更低

l 3DXPoint ,比 SSD更快,更耐写

Ø 第一代产品 Optane(闪腾)已经上市!

Ø 使用 DIMM接口,可当做内存用……

硬件的发展趋势

带宽(MB/s) IOPS 延迟(us) 访问粒度



推荐阅读
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 在 CentOS 7 环境中使用 MySQL 5.6 镜像启动数据库时遇到权限问题,本文将详细探讨并提供解决方案。 ... [详细]
  • SQL 连接详解与应用
    本文详细介绍了 SQL 连接的概念、分类及实际应用,包括内连接、外连接、自连接等,并提供了丰富的示例代码。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
author-avatar
昀尧约_146
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有