MySQL的大数据改进_MySQL

Jun 01, 2016 pm 01:11 PM

 【IT168 专稿】说到大数据,不得不提的就是阿里巴巴。这家全球领先的电子商务企业,每天处理的数据量是其他任何公司都无法比拟的,它也正在转型成为一家真正意义上的数据公司——MySQL就是阿里巴巴转型的重要武器。曾经采访过阿里的一位数据库架构师,他认为阿里将开源MySQL的性能达到最佳状态,超越任何关系型数据库和NoSQL。

  2009年,甲骨文通过收购Sun获得了MySQL的版权,业界就开始质疑甲骨文的用意,担心MySQL的未来发展。而甲骨文在收购时就曾表态,会比Sun投入更多的精力来开发MySQL。目前看来,至少MySQL社区版和第三方版本的发展并没有受到收购的影响,MySQL的商业版本也在持续的改进和更新中。下面笔者将盘点一下甲骨文推出的MySQL 5.6正式版的一些新功能,及其针对大数据时代的改进。

  一、MySQL 5.6正式版功能盘点

  2013年初,甲骨文发布MySQL 5.6正式版,通过提升MySQL优化诊断来提供更好的查询执行时间和诊断功能,通过增强InnoDB存储引擎来提高性能处理量和应用可用性,通过MySQL复制的新功能以提高扩展性和高可用性,并且拥有许多新增强功能,包括地理信息系统、精确的空间操作、增强的IPv6合规性和优化服务器的默认设置。

  凭借增强的性能、可扩展性、可靠性和可管理性优势,MySQL 5.6可帮助用户满足最苛刻的网络、云和嵌入式的应用需求。通过子查询优化、在线数据定义语言(DDL)操作、NoSQL访问InnoDB、新的性能架构检测以及更好的条件处理,MySQL 5.6可极大提高开发人员的灵活性。

  四大亮点:

  1.通过提升MySQL优化诊断来提供更好的查询执行时间和诊断功能

  ·子查询优化:通过在执行之前优化子查询来简化查询开发。新效率体现在查询执行时间内,显著提升结果集的选择、分类并返回交付。

  ·新增的指数条件下推(Index Condition Pushdown)和批量密钥访问(Batch Key Access)功能可提高选择查询量高达280倍。

  ·增强的优化诊断功能:通过EXPLAIN进行INSERT,UPDATE和DELETE操作。EXPLAIN计划以JSON格式输出,提供更精确的优化指标和更好的可读性,优化跟踪(Optimizer Traces)可跟踪优化决策过程。

  2.通过增强InnoDB存储引擎来提高性能处理量和应用可用性

  ·提升处理和只读量高达230%:通过InnoDB重构,以尽量减少传统线程,冲洗和清理互斥冲突和瓶颈,从而在高负重OLTP系统上,实现更好的并发性,进而针对只读工作负载(2)和处理,显著提高处理量。

  ·提高可用性:在线DDL操作可使数据库管理员添加索引和执行表变更,且应用程序仍可用于更新。

  ·InnoDB全文搜索:允许开发人员在InnoDB表上,建立全文索引,以表示基于文本的内容,并加快单词和短语的应用搜索。

  ·简单、关键值查找:通过熟悉的Memcached API,对InnoDB的灵活NoSQL访问,提供了InnoDB数据的简单、关键值查找。用户可实现在同一个数据库,关键值操作和复杂的SQL查询的“双赢”效应。

  3.通过MySQL复制的新功能以提高扩展性和高可用性

  ·自我修复功能的复制集群:新增的全球处理识别和使用程序(Global Transaction Identifiers and Utilities)能更方便的实现自动检测并从故障中恢复。碰撞安全复制功能(Crash-Safe Replication)使二进制日志和从动装载,在崩溃和恢复复制的情况下,能自动恢复到在复制流的正确位置上,而无需管理员干预。通过自动检测和警告错误,Checksums可跨集群维护数据的完整性。

  ·高性能复制集群:通过多线程的从动装置(3),Binlog组提交和基于行复制的优化(Binlog Group Commit and Optimized Row-Based Replication)使复制能力提高了5倍,让用户在向外扩展其跨商品系统的工作负载时,能够最大限度地提高复制性能和效率。.

  ·时间延迟复制:能防止发生在主机的操作失误,如意外删除表格等。

  4.增强的性能架构(PERFORMANCE_SCHEMA):新检测让用户能够更好地监控资源最密集的查询、对象、用户和应用程序。也可通过查询、线程、用户、主机和对象来实现新汇总统计信息概要。增强功能允许更简便的默认配置,且只耗费不到5%的成本。


  二、MySQL针对大数据的改进

  1、NoSQL功能

  在甲骨文最新发布的MySQL 5.6正式版中,增加了一些NoSQL特性,即通过Memcached API对InnoDB的灵活NoSQL访问,提供了InnoDB数据的简单、关键值查找。从此可以看出NoSQL对关系数据库的确产生了巨大的影响,MySQL的这一举动可以让开发人员更加方便的使用NoSQL和关系数据库。

  但有很多技术人员认为MySQL的这一功能略显鸡肋,并不能真正发挥NoSQL的作用。以扩展性为例,NoSQL的一个主要优势就是横向扩展(Scale Out)。例如Cassandra能够简单透明地在多个机器上进行扩展,它们可以是廉价的硬件组成的集群,而无需购买昂贵的服务器或者SAN存储。这一点MySQL 5.6是做不到的。

  2、支持Hadoop

  MySQL团队最新推出了MySQL Applier for Hadoop(以下简称Hadoop Applier),希望解决从非MySQL服务器复制数据的问题。

  例如,复制事件中的从服务器可能是一个数据仓库系统,如Apache Hive,它使用Hadoop分布式文件系统(HDFS)作为数据存储区。如果你有一个与HDFS相关的Hive元存储,Hadoop Applier就可以实时填充Hive数据表。数据是从MySQL中以文本文件形式导出到HDFS,然后再填充到Hive。

  操作很简单,只需在Hive运行HiveQL语句'CREATE TABLE',定义表的结构与MySQL相似,然后运行Hadoop Applier即可开始实时复制数据。

  在Hadoop Applier之前,还没有任何工具可以执行实时传输。之前的解决方案是通过Apache Sqoop导出数据到HDFS,尽管可以批量传输,但是需要经常将结果重复导入以保持数据更新。在进行大量数据传输时,其他查询会变得很慢。且在数据库较大的情况下,如果只进行了一点更改,Sqoop可能也需要较长时间来加载。

  而Hadoop Applier则会读取二进制日志,只应用MySQL服务器上发生的事件,并插入数据,不需要批量传输,操作更快,因此并不影响其他查询的执行速度。

  小结

  MySQL是业界最优秀的一款开源关系型数据库软件,拥有大批追随者,他们不仅使用MySQL,也为MySQL社区做贡献,形成一个良好的生态系统。对于MySQL而言,对NoSQL和Hadoop的支持只能是对大数据时代的一种迎合,对于技术人员的作用不置可否。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? Mar 18, 2025 pm 12:01 PM

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

MySQLの大きなデータセットをどのように処理しますか? MySQLの大きなデータセットをどのように処理しますか? Mar 21, 2025 pm 12:15 PM

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? 人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? Mar 21, 2025 pm 06:28 PM

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか? ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか? Mar 19, 2025 pm 03:52 PM

この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

外国の鍵を使用して関係をどのように表現しますか? 外国の鍵を使用して関係をどのように表現しますか? Mar 19, 2025 pm 03:48 PM

記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? 共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? Mar 18, 2025 pm 12:00 PM

記事では、準備されたステートメント、入力検証、および強力なパスワードポリシーを使用して、SQLインジェクションおよびブルートフォース攻撃に対するMySQLの保護について説明します。(159文字)

JSON列にインデックスを作成するにはどうすればよいですか? JSON列にインデックスを作成するにはどうすればよいですか? Mar 21, 2025 pm 12:13 PM

この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。

See all articles