今日は、第2回 MariaDB/MySQL コミュニティ イベント in Tokyo に参加してきました。 第1回目の内容(わたしのメモはこちら)を焼き直した印象であまり update はない感じでしたが、 MariaDB/MySQL 双方の生みの親である Monty 氏のナマの「喝!」が聞けた貴重なイベントでした。
(そういう意味では、タイトルは MariaDB のお父さん、キレる!に近かったですね・・・)
個人的に印象的だったのは、このイベントに参加してくるような人でも、 「 MariaDB に移行を考えているか?」という質問に手を挙げる人が指折り数えるくらいしかいなかったことでした。
MySQL ほどかなり枯れているプロダクトもないので
- MySQL と MariaDB は完全互換。
- 移行は楽勝やでほんま!
- MariaDB はオープン、コミュニティ主導。
- Oracle みたいにロードマップをひとりよがりにきめたりせんで!
- MySQL 5.6 はバグだらけ、 MariaDB 導入した人からはわしら問題があったなんてきいたことないで!
- GTID は MariaDB の実装のほうがええで!
- MariaDB にしない理由あらへんわ、いや、ほんまやで!
と Monty 氏直々に言われたからと、なかなか単純に MySQL から MariaDB に移行する人もいないかな、と思うのでわたしは違和感を感じませんでしたが、 Monty 氏たちはイライラしてる印象を隠せないように見えました。
かといって、 Monty 氏が仰っていたとおり
「MariaDB はフリーだからとりあえず使ってみて!」
というのも正しいと思うので、まずユーザとしては使ってみたほうがいいな、というのも思いました。
ありがたいことに、
「ブログ書いたり、直接メッセージやメールくれたり、フィードバックどんどんしてくれたら、それにたいしてどんどん改善していくから」
とも Monty 氏は仰っていたので、なおのことまずはやってみなはれ、なのかな、と。
個人的には、Cassandra Storage Engine 、 Connect Storage Engine そして、今日はほとんど話がありませんでしたが、MariaDB Galera Cluster - MariaDBに興味があるので、ブログに書くかどうかはおいておいて、試してみようかな、とは思っています。
では、ここから今日のわたしのメモの公開になります。
わたしが参加してきたのは以下の 8 セッションでした。
- 14:00 SkySQL社Michael氏の挨拶「SkySQL社の3年間のあゆみ」
- 14:15 MySQL FounderのMONTY氏による講演「MariaDB10.0 過去から現在」
- 15:00 Spiral Arms斯波氏の講演「MariaDB 10.0とSpider, mroonga」
- 16:00 SkySQL社Colin氏の講演「MySQLからMariaDBの移行と導入事例」
- 16:50
- 株式会社ディー・エヌ・エー 樋口様「HandlerSocket 2.0」
- MySQLユーザー会の分科会(MariaDB)堤井氏の講演「MariaDBのすすめ(仮)」
- 17:50 MySQL FounderのDavid氏による講演
- 18:30 株式会社ディー・エヌ・エー 中谷様の講演「MySQLite: SQLiteデータベースを読み書きするMySQLストレージエンジン」
では、以降が各セッションのメモです。
SkySQL社Michael氏の挨拶「SkySQL社の3年間のあゆみ」
SkySQL & MariaDB - 3 Years On
SkySQL and MariaDB the Origin
- story started from 1981
- 1995 MySQLAB
- 2007 $1B acquired by Sun
- 2008 Maria Engine now Aria (Monty)
- 2008-9 Orale came to buy Sun
- And MariaDB born
- 2010 MySQL support team out from Oracle and created SkySQL
- 2012-3 SkySQL and MariaDB services created MariaDB Foundation
- Reunited developers and support team
3 properties
- mariadb.org,,,, ( remaining 2, failed to take note ...)
SkySQL Freedom of Choice
- 90% of MySQL staff
- SkySQL is MySQL-version agnostic
- OUr build is MariaDB
- LGPL connectors
- ODBC, JDBC, C, Perl
Why SkySQL?
- High Customer Satisfaction
- Japan: アシスト
Subscription Options
- Superior with Oralce
Usecase
- DealerTrack
- Greetz
- Migrate to Oracle to MariaDB
MySQL FounderのMONTY氏による講演「MariaDB10.0 過去から現在」
- icebreak:
- MariaDB 10.0
- 5years since last time happy to be here.
- Yongest daughter Maria's photo.
Why MariaDB
- to keep the MySQL talent together
- To ensure that a free version of MySQL alwasys exist
MariaDB Foundation Overview
- new driver of the MariaDB project
- Custodian of the code, Cuardian of the community
- never to be controled by particular persion or company
MariaDB Foundation Goals
- Increase adoption of MariaDB
- sustainable high quality
Foundation Members
More members and sponsors are welcome! * Booking.com * SkySQL * Parallels
What is Maria DB
- MariaDB server is a branch of MySQL
- User level compatible
- GPL only
Features of the differenct MariaDB releases
- 5 releases since last 4 years.
- And MariaDB-Galera (multi-master) was released as stable in Feb 2013 after a lot of testing.
Feedback plugin
- Sending report of MariaDB problem automatically
- Strength of using MariaDB
- MariaDB 5-10% users in US.
- in this conferece, 1-3 person raise a hand using MariaDB
Major new features in MariaDB 5.2
- Sphinx SE
- Virtual columns
- Extended User Statistics
- Segmented MyISAM key cache
- Not transaction safe though, using this make things faster
- Pluggable Auth (developed by community)
New in MariaDB 5.4
- Faster subquery
- optimizer improvements are made
- Faster joins
- Multi-Read-Range
- Batch key access
- Index condition pushdown
- Classic Hash joins
- Full microsecond support
- Group Commit
- Commit throughput, faster fsync than other MySQL version like 5.5. Also rather than faster than facebook patched MySQL
- source: Marc Callaghan's blog
- Progress report for ALTER TABLE, LOAD DATA, REPAIR, OPTIMIZE & ANALYZE
- Precise GIS operations
- Windows Installer
- kb.askmonty.org/en/what-is-mariadb53
MariaDB 5.3 and NoSQL
- Better NoSQL Support
- 50% faster HANDLER commands; HANDLER READ
- HandlerSocket complied in (direct access to InnoDB)
- Dynamic columns *each row can have different set of columns)
SQL doesnt solve all common problems
- There is no easy way to store manay different types into RDBMS
-> Dynamic Columns become option.
Dynamic columns in MariaDB 5.3
- for POC in 10.0 creted storage engine for Cassandra and LevelDB
New thead pool for 5.5
- if MySQL 5.5 in Enterprise version
- made pool of thread, scalability(performance) improved
Optimizations comparison (chart)
- with MariaDB 5.3, 5.5 MySQL 5.5, 5.6
MySQL 5.6 out of code
- Don't recommend to use, many bugs
Why MariaDB 10.0
- why not 5.6
- a full merge of MySQL 5.6 into MariaDB 5.6 is a one year project as a lot of code has to be completely rewritten
- features and usable code are removed
- ...
- Better to do the merge in 2 steps into 10.0 and 10.1
Moving to MariaDB 10.0
- MariaDB 10.0 beta should be binaly compatible with MySQL 5.6
MariaDB 10.0
- Features back ported from MySQL 5.6
- All InnoDB changes
- Performance schema changes
- Read only transaction
- Online ALTER TABLE
Reimplemented from 5.6
- Global transaction etc...
New features in MariaDB 10.0
- SHOW EXPLAIN
- DELETE ... RETURNING
- faster group commit
- Storage engine for Cassandra
- Connect Storage engine
- Roles
- GIS support
- what-is-mariadb100
Benefits of MariaDB 10 GTID (Global transaction ID)
- Never heard who using MySQL 5.6 GTID work properly
- Much simpler and robust design than MySQL 5.6
- GTID can be enabled or disabled independently and online for Masters or Slaves
- Slaves using GTID donot have to have binary logging enabled
- Supports multiple replication domains
- Supports multi-source replicaiton
Benefits of MariaDB Parallel replication
- Queries from different domains are executed in parallel
- Queries thar are run in parallel o the master are run in parallel on the slave
- Transactions modifying the same table can be
- For the first itme in MySQL/MariaDB history, the slave will be as fast as the master!
What are planned for MariaDB 10.x
- GIS
- More Online Ops
- Compatibility & usability
- IPv6
- Statistics and Monitoring
- Optimizer
- Performance
- Easy to use
plans-for-10x
LGPL client libraries
- C and Java
- ODBC driver is now on development
MariaDB and TokuDB
- TokuDB is now a native plugin for MariaDB
Connect Storage Engine
- You can read, write and update files in a lot of different storage format
- .DBF,
- .CSV
- .INI
- .XML
- ODBC etc....
- e.g. Connect storage engine enable you to join InnoDB over Oracle, PostgreSQL and ...
Challenges with forking MySQL
- Creating a team (take over MySQL)
- Creating a docs and forums (askmonty.org)
- build & test env (buildbot)
- Keeping up with MySQL development
- Creating a developer community
- Oracle not have good relationship with community (example)
- Finding a business model for licencing
Knowledgebase Free MariaDB/MySQL/SQL99 mariadb/kn
Communitiy's power
- Most features in MariaDB 5.2 were contributed by the community!
- mariadb-case-studies
Reason to switch to MariaDB today
- 30 man years of more delelopment than MySQL
- MariaDB is maintained by the people that originally created MySQL
- MariaDB is binary compatible with MySQL
- Have heard nothing problem using MariaDB from our user, MySQL 5.6 a lot!
- No reason to use MySQL, None!
MariaDB 10.0 was made possible thans to
- Oracle
- SkySQL
- MariaDB Foundation
- The MariaDB Community
MariaDB popularity is increasing (2012-2014)
- Wikipedia move to MariaDB
- RedHat
- FusionIO showing benchmarks with MariaDB
Questions?
- 10.1 will be available in a couple of month later.
- Which should I choose for MyISAM alternative Aria or XtraDB
- XtraDB is percona's product
- Recommend TokuDB
Spiral Arms斯波氏の講演「MariaDB 10.0とSpider, mroonga」
- MariaDB の Plugin としての両プロダクト
Spider Storage Engine とは?
- 別のサーバにあるテーブルもしくはビューをローカルの DB にあるテーブルもしくはパーティションとして機能させることができる
- MariaDB 10.04 からバンドルされている
大量のトラフィックを処理したり (DB sharding)
- 並列処理したり (parallel processing)が可能に
複数のアプリケーションで利用している DB を1つの DB としてみることも可能
構成例
- アプリケーションは 1 つの DB に接続すれば他の DB を意識せずに利用できる
Spider の使い方
- Spider バンドルされた MariaDB をインストールする
- Spider をプラグインとしてインストール
- テーブルを作成する (1対1リンクの場合、 db sharding の場合) カラムの情報は省略してもテーブルは作成可能 (もとのテーブルから踏襲される)
- Tips: サーバの接続情報は CREATE SERVER 構文を使うと便利
Spider のその他の機能
- 冗長化機能
- 耐障害性機能 (Failover)
- 全文検索機能
- NoSQL 対応 (HandlerSocket) : 現時点では MariaDB では非対応
- OracleDB 接続機能 : これも現時点では MariaDB 非対応
Spider が使われているサービス
- Eight というサービス 8card.net
- CCM Escape
- Elastic statics cluster
Mroonga Storage Engine
- 全文検索、位置情報検索を提供をする Storage Engine
- 検索中でも高速に検索できる
- 日本語全文検索にも対応
- 他の Storage Engine と組み合わせて全文検索と位置情報検索を付加することが可能
- Spider と組み合わせて分散したデータを全文検索できる
- mroonga.github.com
Mroonga が使われているサービス
- PatentField 特許の情報
- nanapi
- rec.to
- ikea-hikaku.com
- sinsai.info
- Bizreach
MariaDB 10.0
- 次の MariaDB の安定版になる
- 現在は RC 版 (release candidate)
- マルチソースレプリケーション
- パラレルレプリケーション
- engine-independent table statistics (OPTIMIZER)
- Spider, Mroonga ともにバンドルされてるよ!
カスタマイズ版 MariaDB 10.0
- MariaDB の機能をよりよく利用するためのカスタマイズ
- MySQL 5.5 Spider バンドル版の改修をあわせたものになっている
- カスタマイズ版では
- slave_transaction_retry_errors をつかったスレーブのリトライなどが可能に
- Partition された Spider テーブルで BKA (Batched Key Access) を利用して JOIN を高速化できる
- join_cache_level=5 以上にすることで設定可能
まとめ
- Spider とは?
- DB sharding を実現する
- Mroonga とは?
- 全文検索、位置情報検索
- MariaDB 10.0
- Spider はバンドルすでにされていて、 Mroonga はバンドル準備中
- カスタマイズ版 MariaDB 10.0 がある
- Spider の既存利用者は Spider の機能がより多く利用できるようになるよ
- 現状で完全な Spider を使いたい人は、ゼヒこちらを!
Questions?
- MySQL バンドル版 Q4M, VP Engine もバンドルされていると思うが、 MariaDB には?
- 今はない
- 早急に用意するつもり
SkySQL社Colin氏の講演「MySQLからMariaDBの移行と導入事例」
MySQL to MariaDB Migration Story
- Not a migraton ,,, yet
- Funded SkySQL to do parallel replication
- Will fund more once 10.0 is GA
- Feature requests
- Lots of QA/testing in public lists like maria-developers
- In future... Google Cloud SQL (MariaDB based)
- Google Summer of code:
- funded roles
- Kerberos Auth
- PCRE regular expression
Wikipedia
- MySQL 5.1 (facebook patched) -> MariaDB 5.5
- Why?
- Optimizer enhancement
- XtraDB
- Foundaton backed
- bugs fixed responsively
- Keep track of facebook patch is anoying
- Query times
- 56ms to 43 ms
- avg. 15.4ms to 12.ms
- 4-15% faster Wikipedia became
Tumblr
- sold to Y! $1B
- Growth
- 2012: 60 Billion relational rows, 21TB
- 2013: 229,208,178,189 billions rows, 54TB
- Jetpants
- tools to provide re-sharding of DB, scale writes, eliminate SPoF
- merging shards, MariaDB is the aggregator node
- Multi-source replication works.
- merging shards, MariaDB is the aggregator node
- tools to provide re-sharding of DB, scale writes, eliminate SPoF
SpamExperts
- MySQL 5.0 -> MariaDB 5.1
- Simple reason why choose MariaDB
- MySQL 5.0 to MySQL 5.1, when upgrade will face several bugs.
- Initially had 300 servers, now they have thousands.
Web of Trust
- browser plugin
- mywot.com - over 114 M users
- MySQL 5.0 to 5.1
- just MariaDB upgrade is better than MySQL 5.1
- Many bugs fixed in the upgrade process
- MariaDB just works
TokuDB integration
- FictionPress + FanFiction
- better performance
- hot schema changes
- Limelight Networks
- 1,800 customers, agile cloud storage.
- Setup took a few hours.
Kakao Talk
- Sped up messaging system by ore than 5x
- Using FusionIO + MariaDB extentions
- atomic writes
- dont need doublewrite bufffer for InnoDB
- atomic writes
- Over 100 M users worldwide powerd by MariaDB 5.5
FusionIO fixes
- FusionIO atomic writes ake FusionIO use MariaDB for all their demos
- LuxBet
- online gambling/betting site Australia is also powered by this
- Monty said they will continuously working with FusionIO to get more better performance.
- Big announcement will be happen in this year MySQL Conference (planning to hold on this April)
WiredTree (& Other web hosts)
- using MariaDB ca speed them significantly. INSERT 24% faster.
- Joomla
- WordPress
SlashGear
- Covering live events like Apple launghes with very heavy traffic
- Switching MariaDB & Nginx saved $12,000/year
OLX
- International classified directory, 40 M page views/day
- For INFORMATION_SCHEMA
- 80% performance gain over older MySQL install
MariaDB also safe in finance industrory
- Paybox services in France
- loved MariaDB 5.5
- replication
- optimizer refactoring (from 5.2 started)
SkySQL helps migratons!
- Case you can find from their site
- Believe Digital
- Nimbuzz
- MySQL to MariaDB is not the only migration
- Oracle
- SQL Server
- NoSQL
- CassandraSE allows you to query a Cassandra cluster; RockDB(LevelDB) exist; and more
Why MariaDB?
- Simply because Problem with 5.6
- GTID requires a complete restart of your topology
- PERFORMANCE_SCHEMA overheads (10% performance off)
- Single threaded slowdowns
- Semi-sync, group commit, requires enhancement
- See: 356 commits (fixes, features) in FB tree
- See: 68 bugs fixed in Percona Server 5.6 (ot in MySQL 5.6)
- See: 1991 bugs fixed in 5.6, 3763 bugs fixed since 5.5 GA
- a lot of bugs (Tomas Ulin keynote, Nov, 2013, London)
In whole area MariaDB superior than MySQL.
- Every single merge, MariaDB review all merge.
It's your turn.
- Hope you all migrate to MariaDB.
- planatmysql.org, planetmariadb.org
Questions?
- How many users are using Galera-Cluster?
- Greetz is one of the user using Galera-Cluster.
- mariadb.org/JIRA you can find more informations.
From Monty comment:
- MariaDB is a free software.
- Please use it and test it and give us feedback.
株式会社ディー・エヌ・エー 樋口様「HandlerSocket 2.0」
3行でまとめると
- HandlerSocket とは MariaDB-MySQL の非SQLフロントエンド
- 性能向上、通信料削減、メモリ使用量削減
- v2 でクエリ解釈するロジックを外部モジュールで定義できるようになり、従来よりも複雑なクエリをサポート
性能の違いをグラフで
- HandlerSocket で最大 512 concurrent で 1000000 queries per sec 以上.
- 比較対象のコネクションプールのスレッドとくらべて 5 倍超
HandlerSocket 開発のねらい
- DB キャッシュ用サーバを置くことによるシステムの複雑化や不整合問題を回避すること
- 予測可能で安定した性能 (性能問題でのシステム障害を起こさないように)
- 同時接続数や通信量などのネックを回避 (スケーラブルになるように)
HandlerSocket を使うには
- MariaDB 5.3 以降からはいってる
- インストールは
- my.cnf にいくつか設定
- install plugin handersokcet
- telnet で port 9998 で
構成
- Handler IF
- 本来なら SQL Layer + Listner
- の構成のところを
- HandlerSokcet Plugin を使ってる。
HandlerSocket Client
- 各言語のクライアントライブラリがある
- telnet でもしゃべれちゃう
HandlerSocket の主な機能
- PK や UK を使った行取得
- 範囲取得
- 更新系
- Atomic な Increment/Decremen
- row-based の形式でバイナリログにも記録
- ACID 特性は MySQL と同じ
- 書き込みは同期的、設定にもよるが Durable
MySQL で通信内容が冗長になるケースの紹介
- NW もったいない使用の仕方
- libmysqlclient/mysqld の内容
- 結果セットメタデータがムダと考えた
- HandlerSocket をつかうことによって通信量を削減できる
MariaDB の theread pool について
- 有効にすると SQL クエリについても同時接続数を増やした時の性能劣化が小さくなる
- HandlerSocket をつかった場合と似た特性になる
- ただし、 HandlerSocket をつかうときは thread pool を無効にしておいたほうがいいかもしれない
- sleep しうる処理は、 one-thread-per-connection のほうが向いている
HANDLER クエリ
- 索引に対する低レベルアクセスを行うクエリ
- 参照クエリのみのサポート
- SELECT より速いことが多い
- ただし、取得する列を指定することができず、常に全フィールドになってしまう
Serer-Side Prepared Statement
- 少しだけ性能があがることがある
- 本来はもっとあがるはずなんだが、現状はそんなに性能上がらない
HandlerSocket リクエストの pipelining
- HandlerSocket プロトコルは pipeline 化可能
- プロトコルは単純な行ベースなので、接続を集約して pipeline 化するプロキシを簡単につくってくれる
これまでを全部まとめてベンチマーク
- HandlerSocket (pipelingin x 5) で 最大 2,000,000 queries per sec でてる
ベンチマーク環境 photo
v2.0 の変更点について
- もともとやりたかった単純なクエリだけでなく複雑なクエリも HandlerSocket で処理できるようにするための変更
ねらい
- Stored Procedure のように手軽に HandlerSocket へ機能追加できるようにしたい
構成
- hs module
- hsmod_module : モジュールがロードされたおきに1つ
- hsmod_worker : ワーカースレッドにつき1つ
- hsmod_conn :
- hsmod_stmt :
HS2.0 クエリ(仮)ー単純なクエリを実行させるものの実装をかんがえている
- HS 用独自のクエリ言語のようなもの
- inner join もできる
- 実際のパフォーマンス
- simple query: 1,000,000 qps
v2.0 でもできないこと
- 一言で言うと sleep するような処理はできない
- 自動コミットを抑制はできない
- レスポンスが返った時点でコミットされている
- rollback はできない
- 複数リクエストをひとつのトランザクションで実行しているから
- 自動コミットを抑制はできない
SQL をサポートするかは未定
- SQL をパースして実行計画をつくって HS2.0 (仮)を実行するようにすれば可能は可能
- でも未定
launchpad の 10.0-hs-devel で開発中
Questions?
- 樋口さんはサポートはしてる?
- わたしは何もいわない
- 4 年間一度も問題起こしたことないのは実は自慢だったりしますけど
MySQLユーザー会の分科会(MariaDB)堤井氏の講演「MariaDBのすすめ(仮)」
MariaDB 何がいい
- MariaDB はコミュニティ重視
- MariaDB は MySQL 完全互換
- MySQL 5.5 -> 5.6 でかなり変わってむしろそっちが非互換なんじゃないのという話
- とはいえ、 MySQL から MariaDB に移行してまったく問題がでないわけではない
- だから Colin 氏の話があったと思っている
- 仮に MySQL から MariaDB は楽でも MariaDB から MySQL に戻すのは難しくなるかも
- ロゴはアザラシ
- Monty 氏がガラパゴスに旅行したときに劇的な出会いをした
MariaDB 何がいいか?
- OSS
- 速い(らしい)
- Oracle 1 社のコントロールではない
- 開発の方向性がみえる
- コミュニティからの FB
- MacOS X での build も楽しい
MariNA 発足
- MariaDB Nippon Association
- Monty 氏公認
- mysql.gr.jp
- mariadb@mysql.gr.jp
- 移行事例などを紹介していこうかと、いった感じ
MySQL FounderのDavid氏による講演 (Panel Discussion)
What kind of feature do you want to MariaDB
- From Developer side they want to focus on MariaDB with more important and few features
- MySQL, MariaDB compatibility (when they see their knowledgebase)
People who want Japanese compatibility?
- Groonga
- Just my opinion though not much needs for fulltext search with MariaDB
Really Groonga bundle to MariaDB?
- Of course will happen in 10.09!
Falcon is dead.
TokuDB.
- When you feel InnoDB is not enough for its performance. Consider for using it.
InfiniDB for DWH.
Global Transaction ID in what point MariaDB superior
- MySQL version, need to remember whole transaction
- MariaDB not need to implement on whole server. on only Masternode(?)
- MariaDB support GTID default, MySQL 5.6 not default.
- In MySQL 5.6 they realized the previous design is wrong so they made fuge design change.
このパネルは結構聞き取れてないです。 こんな話題を話していた程度にとらえてもらえたら幸いです。 正直、結構、セッションが連続してわたしも疲れてました。 MariaDB 使ってみないことには質問をしようもないので、まずはすこしなりともつかってみないとな、とは思いました。
株式会社ディー・エヌ・エー中谷氏の講演「MySQLite: SQLiteデータベースを読み書きするMySQLストレージエンジン」
- IPA 未踏で High Performance SQLite
- SQLite のクエリ実行は低速
- クエリ実行器が低速
- VDBE (Virtual DB Engine) SQLite 固有が原因
- VDBE 命令間をまたいだ操作のためにメモリ操作が頻発する
- primitive に実装されていて改変が困難
- VDBE (Virtual DB Engine) SQLite 固有が原因
- 逆に MySQL のは高速だなと思っていた
- クエリ実行器が低速
- SQLite DB ファイルを読める MySQLite Storage Engine をつくった
- Use Case
- いまのところないw
- SQLite ユーザが MySQL/MariaDB に移行するとっかかりになるか、も。
と、メモは以上です。 では、今回はこんなところで。