Submit Search
Upload
PostgreSQL使いのエンジニアから見たMySQL
•
1 like
•
667 views
T
toshihiro_kitagawa
Follow
日時: 2016/10/07(金)19:30〜20:30 場所: 株式会社ビズリーチ
Read less
Read more
Software
Report
Share
Report
Share
1 of 24
Download Now
Download to read offline
Recommended
Devsの常識、DBAは非常識
Devsの常識、DBAは非常識
yoku0825
SQLアンチパターンNight ライトニングトーク
SQLアンチパターンNight ライトニングトーク
Itabashi Masayuki
わたしを支える技術
わたしを支える技術
yoku0825
オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用
elanlilac
SQL Server replication overview (JP)
SQL Server replication overview (JP)
elanlilac
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
yoku0825
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
Takahiro Okumura
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形
yoku0825
More Related Content
What's hot
MySQLチューニング
MySQLチューニング
yoku0825
Sql database でも使えるほにゃらら
Sql database でも使えるほにゃらら
Oda Shinsuke
dimSTATから見るベンチマーク
dimSTATから見るベンチマーク
hiroi10
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLは
yoku0825
MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編
Takanori Sejima
Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3
Nobuhiro Hatano
MySQL clients
MySQL clients
yoku0825
Azure sql database 入門 2014年10月版
Azure sql database 入門 2014年10月版
貴仁 大和屋
MySQLステータスモニタリング
MySQLステータスモニタリング
yoku0825
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
yoku0825
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろう
kasaharatt
ゆるふわMySQLフェイルオーバー
ゆるふわMySQLフェイルオーバー
Kimitoshi Takahashi
MySQLの運用でありがちなこと
MySQLの運用でありがちなこと
Hiroaki Sano
MySQL 初めてのチューニング
MySQL 初めてのチューニング
Craft works
How to backup your mroonga database?
How to backup your mroonga database?
yoku0825
Azure SQLデータベース最新動向&TIPS
Azure SQLデータベース最新動向&TIPS
nishioka1
MHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQL
yoku0825
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7
yoku0825
道具を磨くことのススメ
道具を磨くことのススメ
Kenichi Masuda
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
What's hot
(20)
MySQLチューニング
MySQLチューニング
Sql database でも使えるほにゃらら
Sql database でも使えるほにゃらら
dimSTATから見るベンチマーク
dimSTATから見るベンチマーク
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLは
MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編
Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3
MySQL clients
MySQL clients
Azure sql database 入門 2014年10月版
Azure sql database 入門 2014年10月版
MySQLステータスモニタリング
MySQLステータスモニタリング
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
PostgreSQLの関数属性を知ろう
PostgreSQLの関数属性を知ろう
ゆるふわMySQLフェイルオーバー
ゆるふわMySQLフェイルオーバー
MySQLの運用でありがちなこと
MySQLの運用でありがちなこと
MySQL 初めてのチューニング
MySQL 初めてのチューニング
How to backup your mroonga database?
How to backup your mroonga database?
Azure SQLデータベース最新動向&TIPS
Azure SQLデータベース最新動向&TIPS
MHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQL
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7
道具を磨くことのススメ
道具を磨くことのススメ
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
Viewers also liked
Riotjsハンズオン
Riotjsハンズオン
omi end
Unity + AndroidでモバイルVRハンズオン
Unity + AndroidでモバイルVRハンズオン
gunn0430
バッチ高速化のあゆみ
バッチ高速化のあゆみ
dcubeio
[D3]サーバーレスでサービスを作ってみた話
[D3]サーバーレスでサービスを作ってみた話
dcubeio
Google apps scriptを使って業務改善
Google apps scriptを使って業務改善
dcubeio
機械学習を支えるX86 64の拡張命令セットを読む会 20170212
機械学習を支えるX86 64の拡張命令セットを読む会 20170212
dcubeio
AWSをテラフォーミングする会(Terraformハンズオン)
AWSをテラフォーミングする会(Terraformハンズオン)
正貴 小川
覚えて帰ろうJavaデザインパターン
覚えて帰ろうJavaデザインパターン
dcubeio
はじめてのAws lambda
はじめてのAws lambda
dcubeio
React Native GUIDE
React Native GUIDE
dcubeio
サーバーサイドDartを試してみる
サーバーサイドDartを試してみる
Satoshi KOBAYASHI
15分でわかった気になるdart
15分でわかった気になるdart
Satoshi KOBAYASHI
React NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみよう
dcubeio
Angular+Dart=より快適なSPA開発
Angular+Dart=より快適なSPA開発
Satoshi KOBAYASHI
今からでも大丈夫!Firebase入門
今からでも大丈夫!Firebase入門
Tomoki Koga
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
dcubeio
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
dcubeio
HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介
dcubeio
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
dcubeio
Viewers also liked
(20)
Riotjsハンズオン
Riotjsハンズオン
Unity + AndroidでモバイルVRハンズオン
Unity + AndroidでモバイルVRハンズオン
バッチ高速化のあゆみ
バッチ高速化のあゆみ
[D3]サーバーレスでサービスを作ってみた話
[D3]サーバーレスでサービスを作ってみた話
Google apps scriptを使って業務改善
Google apps scriptを使って業務改善
機械学習を支えるX86 64の拡張命令セットを読む会 20170212
機械学習を支えるX86 64の拡張命令セットを読む会 20170212
AWSをテラフォーミングする会(Terraformハンズオン)
AWSをテラフォーミングする会(Terraformハンズオン)
覚えて帰ろうJavaデザインパターン
覚えて帰ろうJavaデザインパターン
はじめてのAws lambda
はじめてのAws lambda
React Native GUIDE
React Native GUIDE
サーバーサイドDartを試してみる
サーバーサイドDartを試してみる
15分でわかった気になるdart
15分でわかった気になるdart
React NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみよう
Angular+Dart=より快適なSPA開発
Angular+Dart=より快適なSPA開発
今からでも大丈夫!Firebase入門
今からでも大丈夫!Firebase入門
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
Similar to PostgreSQL使いのエンジニアから見たMySQL
20160929 inno db_fts_jp
20160929 inno db_fts_jp
yoyamasaki
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
Mikiya Okuno
081108huge_data.ppt
081108huge_data.ppt
Naoya Ito
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
Ryusuke Kajiyama
MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)
Shinya Sugiyama
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
Toshi Harada
PostgreSQL10徹底解説
PostgreSQL10徹底解説
Masahiko Sawada
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
Insight Technology, Inc.
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
Kouhei Sutou
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Yoshinori Matsunobu
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
Kensuke Nagae
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
yoyamasaki
A Tour of PostgreSQL
A Tour of PostgreSQL
EDB
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
LINE Corporation
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
sakaik
Index shotgun on mysql5.6
Index shotgun on mysql5.6
yoku0825
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
Mikiya Okuno
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
Mikiya Okuno
SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
Noriyoshi Shinoda
Similar to PostgreSQL使いのエンジニアから見たMySQL
(20)
20160929 inno db_fts_jp
20160929 inno db_fts_jp
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
081108huge_data.ppt
081108huge_data.ppt
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)
KOF2015 PostgreSQL 9.5
KOF2015 PostgreSQL 9.5
PostgreSQL10徹底解説
PostgreSQL10徹底解説
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
20160929_InnoDBの全文検索を使ってみた by 株式会社インサイトテクノロジー 中村範夫
いろいろ考えると日本語の全文検索もMySQLがいいね!
いろいろ考えると日本語の全文検索もMySQLがいいね!
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
A Tour of PostgreSQL
A Tour of PostgreSQL
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
Index shotgun on mysql5.6
Index shotgun on mysql5.6
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
SQLチューニング入門 入門編
SQLチューニング入門 入門編
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL使いのエンジニアから見たMySQL
1.
PostgreSQL使いの エンジニアから見たMySQL 北川 俊広
2.
自己紹介 北川 俊広(きたがわ としひろ) 株式会社ビズリーチ ビズリーチ事業本部 プロダクト開発部 SIer
→ ビズリーチ PostgreSQL 歴:7年 MySQL 歴:7ヶ月
3.
発表の流れ • えっ!?と思ったこと • 優れているところ •
劣っているところ
4.
えっ!?と思ったこと
5.
えっ、innodb_buffer_poolに物理メモリの80%!? • PostgreSQL 9.5.4文書 shared_buffersに対する妥当な初期値はシステムメモリの25%です。PostgreSQLはオペレー ティングシステムキャッシュにも依存するため、shared_buffersにRAMの40%以上を割り当て ても、それより小さい値の時より動作が良くなる見込みはありません。 •
MySQL 5.6 リファレンスマニュアル 専用のデータベースサーバーでは、これを最大でマシンの物理メモリーサイズの 80% まで設 定することがあります。 InnoDB のバッファープールとオペレーティングシステムのファイルシステムキャッシュ間での 二重バッファリングを回避する際に、O_DIRECT が役立つことがあります。
6.
えっ、UPDATE って行ロックじゃないの!? • インデックス列を条件に指定した場合は、行ロックになる。 •
インデックスのない列を条件に指定するとテーブルロックが掛かる。
7.
mysql> SELECT *
FROM fruits; +----+--------+-------+ | id | name | price | +----+--------+-------+ | 1 | apple | 110 | | 2 | peach | 120 | | 3 | melon | 980 | | 4 | banana | 100 | | 5 | mango | 580 | +----+--------+-------+ 5 rows in set (0.00 sec) mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) mysql> UPDATE fruits SET price = '98’ WHERE name = 'apple'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) mysql> UPDATE fruits SET price = 110 WHERE name = 'banana'; ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction プライマリーキーは id 列、インデックスはなし。
8.
えっ、mysqldumpでもロックするの!? • オプションを付けないと、テーブルロックで一貫性を保証する。 プラガブルストレージエンジン設計のため、トランザクション機能が ないエンジンに合わせてある? • innodbの場合は、--single-transactionオプション必須。
9.
えっ、文字列の大文字小文字区別しないの!? • CHAR, VARCHAR
型は、= 比較で大文字小文字を区別しない! • 区別したい場合は、BINARY 型、VARBINARY 型を使用する。
10.
mysql> SELECT 'MySQL'
= 'mysql'; +-------------------+ | 'MySQL' = 'mysql' | +-------------------+ | 1 | +-------------------+ 1 row in set (0.00 sec) mysql> SELECT BINARY 'MySQL' = 'mysql'; +--------------------------+ | BINARY 'MySQL' = 'mysql' | +--------------------------+ | 0 | +--------------------------+ 1 row in set (0.00 sec) test-> SELECT 'PSQL' = 'psql'; ?column? ---------- f (1 行) test-> SELECT 'PSQL' ILIKE 'psql'; ?column? ---------- t (1 行)
11.
えっ、なんでこんなに複合インデックスが多いの!? • 1テーブルにつき1インデックスしか使えない仕様。 • AND
条件などを考えてインデックスを設計する必要あり。
12.
えっ、それって本当にトランザクション!? • 実行途中にエラーが発生しても、部分的にコミットできる。 • ACID
- トランザクションシステムの持つべき性質 • Atomicity(不可分性) • Consistency(一貫性) • Isolation(独立性) • Durability(永続性)
13.
優れているところ
14.
レプリケーションの形式や範囲が選べる • レプリケーション形式 • ステートメントベース •
行ベース • 混合形式 • 特定のDBやテーブルのみをレプリケーションすることもできる。 • 現在のPostgreSQLは、部分的なレプリケーションはできない。
15.
オンラインDDL • DML をできるだけブロックせずに
ALTER TABLE を実行する機能。 • 注意点 • 実行時にメタデータロック(排他ロック)が一瞬かかる。 • 更新ログがあふれると失敗する。 innodb_online_alter_log_max_size でサイズを指定。 • PostgreSQL もインデックス作成はオンラインでできる。
16.
テーブルのパーティショニングがしやすい • MySQLは、CREATE TABLE
文に PARTITION 句を追加するだけで パーティショニング可能。 • PostgreSQL は、継承機能を用いてパーティショニングを設定するため、 操作が煩雑。 • マスターテーブルを作成 • 子テーブルを作成 • 子テーブルにチェック制約を設定 • マスターテーブルから子テーブルへデータを中継するために、マスタテーブルにトリガを作成
17.
劣っているところ
18.
mysqlコマンドの使い勝手 • タブ補完の精度が良くない。 PostgreSQL は、SQL
構文を理解して補完してくれる。 • ページャがデフォルトで設定されていない。
19.
マニュアルが少しわかりづらい • ストレージエンジンやマイナーバージョンによる動作の違いが多い。
20.
サーバーシステム変数が多い • MySQL 5.6 SHOW
VARIABLES; 445 rows • PostgreSQL 9.3 SHOW ALL; 231 rows
21.
たまに指示を無視する
22.
集合を返す関数が用意されていない • 集合を返す関数は、テストデータを用意するときなどに使えて便利。 • PostgreSQLには、generate_series()
がある。 test=# SELECT * FROM generate_series(1,3) AS i; i --- 1 2 3 (3 rows)
23.
インデックスの使用状況が簡単に取れない • インデックスを削除する際に、それが使用されているかどうか判断 できなくて困った。 • PostgreSQLの場合は、
pg_stat_user_indexes テーブルで使用 状況が見られる。 test=# SELECT * FROM pg_stat_user_indexes; relid | indexrelid | schemaname | relname | indexrelname | idx_scan | idx_tup_read | idx_tup_fetch -------+------------+------------+---------+--------------+----------+--------------+--------------- 88556 | 88560 | public | fruits | fruits_pkey | 0 | 0 | 0 96745 | 96748 | public | test01 | test01_pkey | 0 | 0 | 0 (2 rows)
24.
ご清聴ありがとうございました。
Download Now