Submit Search
PostgreSQL使いのエンジニアから見たMySQL
Download as pptx, pdf
1 like
668 views
T
toshihiro_kitagawa
日時: 2016/10/07(金)19:30〜20:30 場所: 株式会社ビズリーチ
Software
Read more
1 of 24
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
More Related Content
What's hot
(20)
PDF
MySQLチューニング
yoku0825
PPTX
Sql database でも使えるほにゃらら
Oda Shinsuke
PPTX
dimSTATから見るベンチマーク
hiroi10
PDF
MySQL 5.7の次のMySQLは
yoku0825
PDF
MySQLやSSDとかの話 前編
Takanori Sejima
PDF
Osc2015北海道 札幌my sql勉強会_波多野_r3
Nobuhiro Hatano
PPTX
MySQL clients
yoku0825
PPTX
Azure sql database 入門 2014年10月版
貴仁 大和屋
PDF
MySQLステータスモニタリング
yoku0825
PDF
MySQLを割と一人で300台管理する技術
yoku0825
PDF
PostgreSQLの関数属性を知ろう
kasaharatt
PDF
ゆるふわMySQLフェイルオーバー
Kimitoshi Takahashi
PPTX
MySQLの運用でありがちなこと
Hiroaki Sano
PDF
MySQL 初めてのチューニング
Craft works
PDF
How to backup your mroonga database?
yoku0825
PPTX
Azure SQLデータベース最新動向&TIPS
nishioka1
PDF
MHAの次を目指す mikasafabric for MySQL
yoku0825
PDF
今から備えるMySQL最新バージョン5.7
yoku0825
KEY
道具を磨くことのススメ
Kenichi Masuda
PPT
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
MySQLチューニング
yoku0825
Sql database でも使えるほにゃらら
Oda Shinsuke
dimSTATから見るベンチマーク
hiroi10
MySQL 5.7の次のMySQLは
yoku0825
MySQLやSSDとかの話 前編
Takanori Sejima
Osc2015北海道 札幌my sql勉強会_波多野_r3
Nobuhiro Hatano
MySQL clients
yoku0825
Azure sql database 入門 2014年10月版
貴仁 大和屋
MySQLステータスモニタリング
yoku0825
MySQLを割と一人で300台管理する技術
yoku0825
PostgreSQLの関数属性を知ろう
kasaharatt
ゆるふわMySQLフェイルオーバー
Kimitoshi Takahashi
MySQLの運用でありがちなこと
Hiroaki Sano
MySQL 初めてのチューニング
Craft works
How to backup your mroonga database?
yoku0825
Azure SQLデータベース最新動向&TIPS
nishioka1
MHAの次を目指す mikasafabric for MySQL
yoku0825
今から備えるMySQL最新バージョン5.7
yoku0825
道具を磨くことのススメ
Kenichi Masuda
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
Viewers also liked
(20)
PPTX
Riotjsハンズオン
omi end
PPTX
Unity + AndroidでモバイルVRハンズオン
gunn0430
PPTX
バッチ高速化のあゆみ
dcubeio
PPTX
[D3]サーバーレスでサービスを作ってみた話
dcubeio
PDF
Google apps scriptを使って業務改善
dcubeio
PDF
機械学習を支えるX86 64の拡張命令セットを読む会 20170212
dcubeio
PDF
AWSをテラフォーミングする会(Terraformハンズオン)
正貴 小川
PPT
覚えて帰ろうJavaデザインパターン
dcubeio
PPTX
はじめてのAws lambda
dcubeio
PDF
React Native GUIDE
dcubeio
PDF
サーバーサイドDartを試してみる
Satoshi KOBAYASHI
PDF
15分でわかった気になるdart
Satoshi KOBAYASHI
PPTX
React NativeでTwitterクライアントを作ってみよう
dcubeio
PDF
Angular+Dart=より快適なSPA開発
Satoshi KOBAYASHI
PDF
今からでも大丈夫!Firebase入門
Tomoki Koga
PPTX
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
dcubeio
PDF
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
PDF
Ansibleで始めるインフラ構築自動化
dcubeio
PPTX
HR Tech x 機械学習 導入事例紹介
dcubeio
PPTX
おっさんES6/ES2015,React.jsを学ぶ
dcubeio
Riotjsハンズオン
omi end
Unity + AndroidでモバイルVRハンズオン
gunn0430
バッチ高速化のあゆみ
dcubeio
[D3]サーバーレスでサービスを作ってみた話
dcubeio
Google apps scriptを使って業務改善
dcubeio
機械学習を支えるX86 64の拡張命令セットを読む会 20170212
dcubeio
AWSをテラフォーミングする会(Terraformハンズオン)
正貴 小川
覚えて帰ろうJavaデザインパターン
dcubeio
はじめてのAws lambda
dcubeio
React Native GUIDE
dcubeio
サーバーサイドDartを試してみる
Satoshi KOBAYASHI
15分でわかった気になるdart
Satoshi KOBAYASHI
React NativeでTwitterクライアントを作ってみよう
dcubeio
Angular+Dart=より快適なSPA開発
Satoshi KOBAYASHI
今からでも大丈夫!Firebase入門
Tomoki Koga
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
dcubeio
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
Ansibleで始めるインフラ構築自動化
dcubeio
HR Tech x 機械学習 導入事例紹介
dcubeio
おっさんES6/ES2015,React.jsを学ぶ
dcubeio
Ad
Similar to PostgreSQL使いのエンジニアから見たMySQL
(20)
PDF
MySQL 5.5 Update #denatech
Mikiya Okuno
PPTX
【基礎編】社内向けMySQL勉強会
Yuji Otani
PDF
Enter the-dolphine
Mikiya Okuno
PDF
オープンソース・データベースの最新事情
Meiji Kimura
PPTX
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
Ryusuke Kajiyama
PDF
ペパボ de MySQL
yoku0825
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
PDF
Maria db
nekogeruge_987
PPT
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
sakaik
PDF
光のMySQL 5.7
yoku0825
PPTX
SQLチューニング入門 入門編
Miki Shimogai
PDF
PostgreSQL運用管理入門
Yoshiyuki Asaba
PPTX
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
PDF
InnoDBのすゝめ(仮)
Takanori Sejima
PDF
DTraceによるMySQL解析ことはじめ
Mikiya Okuno
PPT
20090107 Postgre Sqlチューニング(Sql編)
Hiromu Shioya
PDF
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
yoyamasaki
ODP
MySQLのパフォーマンスの話
Tetsuro Ikeda
PDF
Oss x user_meeting_6_postgres
Kosuke Kida
PDF
20150920 中国地方db勉強会
yoyamasaki
MySQL 5.5 Update #denatech
Mikiya Okuno
【基礎編】社内向けMySQL勉強会
Yuji Otani
Enter the-dolphine
Mikiya Okuno
オープンソース・データベースの最新事情
Meiji Kimura
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
Ryusuke Kajiyama
ペパボ de MySQL
yoku0825
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
Maria db
nekogeruge_987
MySQL最新情報と、データベースのお勉強のススメ-第68回PHP勉強会
sakaik
光のMySQL 5.7
yoku0825
SQLチューニング入門 入門編
Miki Shimogai
PostgreSQL運用管理入門
Yoshiyuki Asaba
PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~
Miki Shimogai
InnoDBのすゝめ(仮)
Takanori Sejima
DTraceによるMySQL解析ことはじめ
Mikiya Okuno
20090107 Postgre Sqlチューニング(Sql編)
Hiromu Shioya
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
yoyamasaki
MySQLのパフォーマンスの話
Tetsuro Ikeda
Oss x user_meeting_6_postgres
Kosuke Kida
20150920 中国地方db勉強会
yoyamasaki
Ad
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