mysql56_load_r2

Similar documents
PowerPoint プレゼンテーション

MySQL Server 5.0 Load Data ベンチマーク

スライド 1

スライド 1

この時お使いの端末の.ssh ディレクトリ配下にある known_hosts ファイルから fx.cc.nagoya-u.ac.jp に関する行を削除して再度ログインを行って下さい

PostgreSQL Plus 管理者ガイド

Oracle 入門 ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルアップの一助とし

今さら聞けない!? Oracle入門 ~前編~

データベース暗号化ツール「D’Amo」性能検証

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

问题集 ITEXAMPASS 1 年で無料進級することに提供する

Chapter Two

Postgres Plus Advanced Server 9.3パーティションテーブルの特徴と性能検証レポート

Linkexpress トラブル初期調査資料 採取コマンド使用手引書

ERDAS IMAGINE における処理速度の向上 株式会社ベストシステムズ PASCO CORPORATION 2015

KTest

Microsoft PowerPoint - MySQL-backup.ppt

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

Enterprise Cloud + 紹介資料

Webアプリケーションでのlog4j利用ガイド

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

1. はじめに (1) 本書の位置づけ 本書ではベジフルネット Ver4 の導入に関連した次の事項について記載する ベジフルネット Ver4 で改善された機能について 新機能の操作に関する概要説明 ベジフルネット Ver4 プログラムのインストールについて Ver4 のインストール手順についての説明

Webシステム授業資料

PowerPoint Presentation

HULFT8 for Windows/UNIX/Linux/zLinux の機能で発生する不具合について

Microsoft Word - nvsi_090200jp_r1_nvbsvr_mscs.doc

< 障害一覧 > HULFT 配信機能 管理番号 内容 対象バージョン 39 コード変換の必要がない集信処理および配信処理を実行したにも関わ 7.0.0~7.3.1 らず コード変換処理でエラーとなる場合がある 44 システム動作環境設定再設定コマンド (hulclusterxxx -set) を使

PHP 開発ツール Zend Studio PHP アフ リケーションサーハ ー Zend Server OSC Tokyo/Spring /02/28 株式会社イグアスソリューション事業部

リリースメモ

Microsoft Word - nvsi_050090jp_oracle10g_vlm.doc

Pervasive PSQL v11 のベンチマーク パフォーマンスの結果

PowerPoint プレゼンテーション

Arcserve Replication/High Availability 製品の仕組み

今さら聞けない!? Oracle入門 ~後編~

Microsoft Word - JP-AppLabs-MySQL_Update.doc

Rational Roseモデルの移行 マニュアル

Microsoft Word - nvsi_060132jp_datadomain_restoreDRAFT4.doc

Microsoft PowerPoint pptx

PowerPoint プレゼンテーション

SRA OSS, Inc. のご紹介 1999 年より PostgreSQL サポートを中心に OSS ビジネスを開始 2005 年に現在の形に至る 主なビジネス PostgreSQL, Zabbix などの OSS のサポート コンサルティング 導入構築 PowerGres ファミリーの開発 販売

タイトルを1~2行で入力 (長文の場合はフォントサイズを縮小)

データセンターの効率的な資源活用のためのデータ収集・照会システムの設計

Helix Swarm2018.1アップグレード手順

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

目次 はじめに Introduction Analyzing Big Data Vectorwise and Hadoop Environments Vectorwise Hadoop Connector Perform

電子納品チェックシステム利用マニュアル

平成20年度成果報告書

モデリング操作ガイド (データベースモデリング編)

目次 1. はじめに x-servlet の SNMP エージェント設定... 3 ACL ファイルの作成... 3 start.bat の編集 サーバ ID によるサーバ再接続設定... 5 irule の作成... 5 Persistence Profile の作

FormatCreator

クローン機能について 保存先が HDLH シリーズの場合マスタースレーブファイル 設定のコピー HDLH シリーズ 台をそれぞれマスター / スレーブとして構成し マスターの設定やファイルをスレーブに保存します ファイルの保存はレプリケーション機能を利用しておこなわれます 社内 LAN マスター故障

Maser - User Operation Manual

マニュアル訂正連絡票

データコピーとは データコピーは 古い NAS のデータを新しい HDL-Z シリーズに簡単にコピーできます 環境例本製品は以下の用途の際に最適です 古い HDL-Z シリーズから新しい HDL-Z シリーズへのコピー古い HDL-Z シリーズから 新しい HDL-Z シリーズへのスムーズなコピーが

はじめに コース概要と目的 Oracle を使用した開発 管理を行う上でのファースト ステップとして リレーショナル データベース管理ソフトウェアである Oracle の役割 基本機能 基本アーキテクチャを幅広く理解することを目的としています 受講対象者 これから Oracle を使用する方 データ

Microsoft Word - tutorial3-dbreverse.docx

OracleDBA(パフォーマンスチューニング(SQL編) - コピー

Oracle Data Pumpのパラレル機能

24th Embarcadero Developer Camp

要求受付機能 管理番号内容対象バージョン 314 トレースログに重複してメッセージが出力される場合がある 6.3.2~ 大量のファイルトリガ情報が登録されている状態でファイルトリガプロセスを起動するとファイルトリガプロセスが停止する場合がある 7.2.0~7.3.1 ユーティリティ

Oracle SQL Developer Data Modeler

電子紊品チェックシステム利用マニュアル

AWS Deck Template

Actian PSQL v12 for Magic のご紹介

CLUSTERPRO MC RootDiskMonitor 1.1 for Linux リリースメモ 2013(Sep) NEC Corporation ライセンス パッケージのインストール セットアップ マニュアル

ER/Studio Data Architect 2016 の新機能

自己紹介 1982 年 4 月に日商エレクトロニクス株式会社入社 Sybase を使った銀行系システムの開発 保守を担当 Oracle データベースを使ったアプリケーション設計 開発 保守 およびパフォーマンス チューニングなどのコンサルティング業務を担当 Oracle データベースのデータ移行 再

PowerPoint_template_v1.3.pptx / パワーポイントテンプレート

プレポスト【問題】

リレーショナルデータベース入門 SRA OSS, Inc. 日本支社 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 1

BRAVIA Signage ユーザガイド ( より進んだ使い方 ) Copyright Sony Home Entertainment & Sound Products Inc.

ユーザーズマニュアル 有線ネットワークシステム 発行日 2016 年 3 月 30 日

内容環境... 3 対応 OS の変更... 3 関連アプリケーションの追加... 4 機能追加... 5 グラフ機能... 5 稼働率... 8 サービス一括削除 自動復旧エスカレーションコマンド AWS カスタムメトリックス監視 NRPE 任意監視... 11

ゲートウェイのファイル形式

Agenda 1. 今回のバージョンアップについて a. バージョンアップ概要 b. バージョンアップ目的 c. 新バージョンのシステム要件に関する注意事項 d. 現行バージョンのサポート期間 2. 対応プラットフォームの追加 3. 新機能の追加および機能強化 2

電子納品チェックシステム利用マニュアル

cmpsys13w14-15_database.ppt

日本 PostgreSQL ユーザ会第 28 回しくみ + アプリケーション勉強会 Zabbix を使って PostgreSQL を監視してみよう 2014 年 2 月 1 日 TIS 株式会社中西剛紀 (Yoshinori Nakanishi)

7-1- 基 RDB に関する基礎知識 1 独立行政法人情報処理推進機構

標準化 補足資料

Slide 1

整理番号変換ツール 操作説明書 平成 20 年 11 月 厚生労働省保険局調査課

TALON Tips < カレンダー ( 月別 ) の画面を表示する > 株式会社 HOIPOI 第 1.1 版 p. 1

操作説明書(抜粋)_2013_03

Microsoft Word - JDBC検証 docx

Microsoft Word - nvsi_050110jp_netvault_vtl_on_dothill_sannetII.doc

ArtiosCADセットアップガイド

memcached 方式 (No Replication) 認証情報は ログインした tomcat と設定された各 memcached サーバーに認証情報を分割し振り分けて保管する memcached の方系がダウンした場合は ログインしたことのあるサーバーへのアクセスでは tomcat に認証情報

ORACLE PARTITIONING

データベース マネジメント ~ 研修受講後のスキルアップ サポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR2 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などをまとめたものです 研修受講後のスキルアップの一助として

OS バージョンアップ実行後のご注意 OS バージョンアップ後 更新完了通知が自動的にNECカシオモバイルコミュニケーションズ株式会社の運用するサーバへ送信されます なお NECカシオモバイルコミュニケーションズ株式会社は送信された情報を OS バージョンアップ以外の目的には利用いたしません また

Calpont InfiniDBマルチUM同期ガイド

サーバセキュリティサービス 導入手順書 Deep Security 9.5SP1 (Windows) プロキシ経由編

OSS 運用監視ツールトラブル事例あるある集 ログ監視を行う際に 知っておくべき トラブル事例 2017/06/07 ミラクル リナックス株式会社テクニカルアライアンス部竹村隆吉 公開 Copyright MIRACLE LINUX CORPORATION. All rights reserved.

CLUSTERPRO MC StorageSaver 2.2 for Linux リリースメモ 2017(Apr) NEC Corporation ライセンス パッケージのインストール セットアップ マニュアル 補足事項 注意事項

intra-mart WebPlaform / AppFramework

まう不具合を解消 Windows10 バージョン1803で ディスプレイのサイズを125% 150% にすると STORM VのTOP 画面がズレてしまう不具合を解消しました 6. 動画 + 音声 コンテンツをインポートすると再編集出来なくなる不具合を解消 スライド+ 動画 + 音声 コンテンツをイ

Transcription:

MySQL 5.6 における大量データロード時の考慮点 第 18 回 AWS User Group - Japan 東京勉強会 2013/10/04 平塚貞夫 2013/10/07 Revision 2 1

自己紹介 DB エンジニアやってます 専門は Oracle と MySQL システムインテグレータで主に RDBMS のトラブル対応をしています 仕事の割合は Oracle:MySQL:PostgreSQL=5:4:1 ぐらいです Twitter:@sh2nd はてな :id:sh2 写真は実家で飼っているミニチュアダックスのオス アトムです 2

本日のお題 3

InnoDB データベース大量データ投入 日本 HP さんが以下の検証結果を公開されています すばらしい資料です http://h50146.www5.hp.com/products/software/oe/linux/mainstream/support/doc/read/ しかし 2008 年の資料なので内容が古くなってきました 本日は 2013 年の状況をご紹介します 青字は Revision 2 で追記 修正したところです 4

最適なデータロード手順 5

最適なデータロード手順 MySQL のバージョンによって 最適なデータロード手順が異なります テーブル作成プライマリインデックス作成セカンダリインデックス作成外部キー制約付与外部キー制約無効化データロード外部キー制約有効化 テーブル作成プライマリインデックス作成外部キー制約付与外部キー制約無効化データロード外部キー制約有効化セカンダリインデックス作成 テーブル作成プライマリインデックス作成データロード外部キー制約無効化セカンダリインデックス作成外部キー制約付与外部キー制約有効化 MySQL 5.1 MySQL 5.5 MySQL 5.6 6

Fast Index Creation MySQL 5.5 の新機能です 従来 MySQL(InnoDB) のセカンダリインデックス作成はテーブルコピーを伴っていました これはセカンダリインデックスが定義された新しいテーブルを作成し 古いテーブルから新しいテーブルに全データをコピーして 古いテーブルと新しいテーブルの名前を入れ替えるという仕組みです 非常に遅いです MySQL 5.5 から テーブルコピーを伴わずにセカンダリインデックスのみの作成 削除が行えるようになりました Fast Index Creation と名付けられていますが 実際のところ今まで Slow だったものが修正されて Normal になったという話です 他の RDBMS に比べて特別に速くなったということではありません 7

Online DDL MySQL 5.6 の新機能です テーブルへのカラム追加 インデックス作成などが更新 SQL と同時に行えるようになりました 従来は参照 SQL のみ同時に実行可能でした 制約条件が多いため 実施前にマニュアルで内容を確認してください http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html 外部キー制約の付与についてもオンライン化されています またパラメータ foreign_key_checks を OFF に設定することでテーブルコピーが抑制され 高速化が図れるようになっています SET SESSION foreign_key_checks = OFF; ALTER TABLE `order_line` ADD CONSTRAINT `order_line_fk1` FOREIGN KEY (`ol_w_id`, `ol_d_id`, `ol_o_id`) REFERENCES `orders` (`o_w_id`, `o_d_id`, `o_id`), ADD CONSTRAINT `order_line_fk2` FOREIGN KEY (`ol_supply_w_id`, `ol_i_id`) REFERENCES `stock` (`s_w_id`, `s_i_id`); SET SESSION foreign_key_checks = ON; 8

データロードの性能測定 9

測定内容 TPC-C の注文明細テーブルに対してデータロードを行い 処理時間を測定しました レコード数 :30,007,060 件 ファイルサイズ :1,958MBytes プライマリインデックス順でソート済み 外部キー制約に違反するデータはない プライマリインデックス 1 個 セカンダリインデックス 2 個 外部キー制約 2 個 PRIMARY KEY (`ol_w_id`,`ol_d_id`,`ol_o_id`,`ol_number`), KEY `order_line_ix1` (`ol_i_id`), KEY `order_line_ix2` (`ol_dist_info`), CONSTRAINT `order_line_fk1` FOREIGN KEY (`ol_w_id`, `ol_d_id`, `ol_o_id`) REFERENCES `orders` (`o_w_id`, `o_d_id`, `o_id`), CONSTRAINT `order_line_fk2` FOREIGN KEY (`ol_supply_w_id`, `ol_i_id`) REFERENCES `stock` (`s_w_id`, `s_i_id`) 10

測定環境 以下の環境を使用しました CPU:Intel Core i5-2400s (Quad-Core 2.50GHz Max 3.30GHz) SSD:CSSD-S6T512NHG5Q (TOSHIBA HG5d) ホスト OS:Scientific Linux 6.4 x86_64 ゲスト OS:Scientific Linux 6.4 x86_64 ゲスト CPU 割り当て :2Cores ゲストメモリ割り当て :8GBytes MySQL は以下の 3 バージョンを使用しました MySQL 5.1.69 (Scientific Linux 6.4 バンドル版 ) MySQL 5.5.34 ( オラクル公式 RPM 版 ) MySQL 5.6.14 ( オラクル公式 RPM 版 ) 主なパラメータを以下に示します innodb_buffer_pool_size = 1G innodb_log_file_size = 128M log_bin = OFF 11

測定パターン 5 つのパターンで測定を行いました パターン 1: 単純ロード TBL 作成 PK 作成 IX 作成 FK 作成 ロード MySQL 5.1 最速 パターン2:&FKを無効化 TBL 作成 PK 作成 IX 作成 FK 作成 FK 無効化 ロード FK 有効化 パターン3:&IXを後作成 TBL 作成 PK 作成 FK 作成 FK 無効化 ロード FK 有効化 IX 作成 MySQL 5.5 最速 パターン4:& 一度に作成 TBL 作成 PK 作成 FK 作成 FK 無効化 ロード FK 有効化 IXを一度一度に作成 パターン5:&FKも後作成 MySQL 5.6 最速 TBL 作成 PK 作成 ロード FK 無効化 IXとFKを一度一度に作成 FK 有効化 12

MySQL 5.1 の測定結果 処処処処 [ 秒 ] 0 1,000 2,000 3,000 4,000 5,000 MySQL 5.1.69 (1) 単単ロロロ (2) & FK を無効化 (3) & IX を後作成 (4) & 一度に作成 (5) & FK も後作成 後後後 2 後後後 1 ロード パターン 2 が最も速いです パターン 3 の後作業 1 は 1 つ目のセカンダリインデックス作成 後作業 2 は 2 つ目のセカンダリインデックス作成です MySQL 5.1 のセカンダリインデックス作成はテーブルコピーを伴うため 実質的にデータロードを 3 回行ってしまっています パターン 4 のようにセカンダリインデックス作成を一度に行うことで テーブルコピーの回数を減らすことが可能です これはパターン 3 のオレンジ部分がなくなった状態と同じです 13

MySQL 5.5 の測定結果 処処処処 [ 秒 ] 0 1,000 2,000 3,000 4,000 5,000 MySQL 5.5.34 (1) 単単ロロロ (2) & FK を無効化 (3) & IX を後作成 (4) & 一度に作成 (5) & FK も後作成 後後後 2 後後後 1 ロード パターン 4 が最も速いです MySQL 5.5 の Fast Index Creation がよく効いています Fast Index Creation が効く場合でも パターン 4 のようにセカンダリインデックス作成を一度に行うことは有効です これは セカンダリインデックス作成の最初に行うテーブルフルスキャンを 1 回に抑えることができるためです MySQL 5.5 の場合 外部キー制約の付与は残念ながらテーブルコピーを伴います 14

MySQL 5.6 の測定結果 処処処処 [ 秒 ] 0 1,000 2,000 3,000 4,000 5,000 MySQL 5.6.14 (1) 単単ロロロ (2) & FK を無効化 (3) & IX を後作成 (4) & 一度に作成 (5) & FK も後作成 後後後 2 後後後 1 ロード パターン 5 が最も速いです 外部キー制約の付与についてテーブルコピーを抑制できています 最適なデータロード手順においても 1,958MBytes のファイルをロードするのに 560 秒かかっているので スループットは毎秒 3.5MBytes ということになります バージョンアップごとに改善されてきてはいるのですが 他の RDBMS と比較するとまだまだ遅いです 15

ファイルサイズの比較 MySQL 5.1.69 MySQL 5.5.34 MySQL 5.6.14 (1) 単単ロロロ (2) & FK を無効化 (3) & IX を後作成 (4) & 一度に作成 (5) & FK も後作成 (1) 単単ロロロ (2) & FK を無効化 (3) & IX を後作成 (4) & 一度に作成 (5) & FK も後作成 (1) 単単ロロロ (2) & FK を無効化 (3) & IX を後作成 (4) & 一度に作成 (5) & FK も後作成 ファイルサイズ [MBytes] 0 1,000 2,000 3,000 4,000 5,000 6,000 7,000 8,000 Index Data プライマリインデックスでソート済みのファイルをロードしているので テーブル本体はいずれも断片化していない状態です MySQL 5.5 ではセカンダリインデックス MySQL 5.6 では加えて外部キー制約を後作成することで セカンダリインデックスの断片化を抑制することが可能です 16

大量データロード時の考慮点 17

tmpdir に要求される容量について データロード セカンダリインデックス作成や外部キー制約付与などの処理において パラメータ tmpdir で指定したディレクトリに作業用の一時ファイルが作成されます tmpdir に要求される容量について説明します データロードの際は データロードに伴って出力されるバイナリログサイズ分の容量が tmpdir に要求されます トランザクション実行中のバイナリログはパラメータ binlog_cache_size に収まる間はメモリ上に保持され それを超えると tmpdir 上の一時ファイルに保存されます MySQL の LOAD DATA 文は単一トランザクションで実装されており ロードするファイルとほぼ同じサイズのバイナリログが tmpdir に出力されることになります セカンダリインデックス作成 外部キー制約付与の際は 作成されるセカンダリインデックスサイズの 2 倍にパラメータ innodb_online_alter_log_max_size で指定した値を加えた容量が tmpdir に要求されます セカンダリインデックスに応じた容量が要求されるのは Fast Index Creation を行う場合です テーブルコピーを伴う場合は必要ありません セカンダリインデックスを一度に複数作成すると 消費容量が増えます innodb_online_alter_log_max_size は Online DDL 中に変更されたデータを一時的に保存しておくログファイルです デフォルト値は 128MBytes です 18

Fast Index Creation の内部動作 1. それぞれのインデックスについて 対象カラムのデータを tmpdir に書き出します TBL IX1 IX2 変更ログ 2. データをソートしてインデックスを作成します このとき 2 倍の容量を消費します TBL IX1 IX1' IX2 変更ログ 3. インデックスの作成が終わったら datadir に書き戻し 一時ファイルを削除します TBL IX1 IX1 IX1' IX2 変更ログ 4. 同様に 2 つ目のインデックスを作成します TBL IX1 IX2 IX2 変更ログ 5. datadir に書き戻し 一時ファイルを削除します TBL IX1 IX2 IX2 IX2 変更ログ 6. インデックス作成中に変更されたデータを反映し 変更ログを削除します TBL IX1 IX2 変更ログ datadir tmpdir 19

tmpdir の設定方針 Amazon EC2 の場合 Amazon Linux AMI のボリュームサイズがデフォルトで 8GBytes であること tmpdir のデフォルト値が /tmp であることに注意してください 例えば MySQL 用に 100GBytes の EBS ボリュームを追加したにも関わらず tmpdir がデフォルトのままになっていると データロード セカンダリインデックス作成や外部キー制約付与に失敗する可能性があります Amazon RDS では tmpdir が適切に設定されているため 問題ありません tmpdir に要求される容量を正確に見積もることは難しいため 基本的に datadir と同じボリュームを使用することをおすすめします 20

テーブルの再編成について 処処処処 [ 秒 ] 0 1,000 2,000 3,000 4,000 5,000 ファイルサイズ [MBytes] 0 1,000 2,000 3,000 4,000 5,000 6,000 7,000 8,000 MySQL 5.6.14 (1) 単単ロロロ (2) & FK を無効化 (3) & IX を後作成 (4) & 一度に作成 (5) & FK も後作成 ALTER TABLE 実実 後後後 2 後後後 1 ロード MySQL 5.6.14 (1) 単単ロロロ (2) & FK を無効化 (3) & IX を後作成 (4) & 一度に作成 (5) & FK も後作成 ALTER TABLE 実実 Index Data 最適な手順でデータロードを行ったあと ALTER TABLE order_line ENGINE = InnoDB としてテーブルの再編成を行うと 長時間かかってしまううえにセカンダリインデックスがかえって断片化してしまいます これは ALTER TABLE 文が内部的にパターン 2 で処理を行っているためです 本件について Facebook の Mark Callaghan 氏が Feature Request を提出しています http://bugs.mysql.com/bug.php?id=57583 サービスを停止できる場合は 以下の手順で再編成を行ってください 1. セカンダリインデックスと外部キー制約を削除 2. ALTER TABLE 文を実行 3. foreign_key_checks を OFF に変更 4. セカンダリインデックスと外部キー制約を再作成 5. foreign_key_checks を ON に戻す 21

宿題 1. 今回ご紹介したデータロード手順は テーブルにデータが入っていないところから作業を開始するときのものです 例えばデータが 3,000 万件入っているところに 1,000 万件追加する場合は どの手順が最も速いでしょうか 調べてみてください 22