Submit Search
Upload
もしOracleDBAがMySQLを管理することになったときの注意点など
•
1 like
•
1,320 views
Kentaro Kitagawa
Follow
もしOracleDBAがMySQL:dolphin:を管理することになったときの注意点など
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 33
Download now
Download to read offline
Recommended
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
NTT DATA Technology & Innovation
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
yoku0825
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
オラクルエンジニア通信
MySQLerの7つ道具
MySQLerの7つ道具
yoku0825
rsyncのちょっとイイ話
rsyncのちょっとイイ話
Kazuhiro Oinuma
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
Recommended
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
NTT DATA Technology & Innovation
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
yoku0825
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
オラクルエンジニア通信
MySQLerの7つ道具
MySQLerの7つ道具
yoku0825
rsyncのちょっとイイ話
rsyncのちょっとイイ話
Kazuhiro Oinuma
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
オラクルエンジニア通信
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
Masahiko Sawada
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
Takanori Sejima
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
裕之 木下
Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版
Yahoo!デベロッパーネットワーク
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Web Services Japan
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
Satoshi Nagayasu
binary log と 2PC と Group Commit
binary log と 2PC と Group Commit
Takanori Sejima
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Masayuki Ozawa
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
Mikiya Okuno
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果
Masayuki Ozawa
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
NTT DATA Technology & Innovation
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
About NoSQL
About NoSQL
hideaki honda
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
LINE Corporation
More Related Content
What's hot
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
NTT DATA Technology & Innovation
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
オラクルエンジニア通信
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
Masahiko Sawada
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
Takanori Sejima
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
裕之 木下
Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版
Yahoo!デベロッパーネットワーク
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Web Services Japan
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
Satoshi Nagayasu
binary log と 2PC と Group Commit
binary log と 2PC と Group Commit
Takanori Sejima
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Masayuki Ozawa
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
Mikiya Okuno
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果
Masayuki Ozawa
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
NTT DATA Technology & Innovation
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
トランザクションの設計と進化
トランザクションの設計と進化
Kumazaki Hiroki
What's hot
(20)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL13でのpg_basebackupの改善について(第13回PostgreSQLアンカンファレンス@オンライン)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
しばちょう先生が語る!オラクルデータベースの進化の歴史と最新技術動向#3
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
データウェアハウスモデリング入門(ダイジェスト版)(事前公開版)
binary log と 2PC と Group Commit
binary log と 2PC と Group Commit
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
Sql server エンジニアに知ってもらいたい!! sql server チューニングアプローチ
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
トランザクションの設計と進化
トランザクションの設計と進化
Similar to もしOracleDBAがMySQLを管理することになったときの注意点など
About NoSQL
About NoSQL
hideaki honda
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
LINE Corporation
20190530 osc hokkaido_public
20190530 osc hokkaido_public
DAISUKE INAGAKI
LINEのMySQL運用について
LINEのMySQL運用について
LINE Corporation
My sql security (暗号化)
My sql security (暗号化)
Shinya Sugiyama
C32 DB Performance on Cloud by 安藤賀章
C32 DB Performance on Cloud by 安藤賀章
Insight Technology, Inc.
Docomo Cloud Package
Docomo Cloud Package
Osaka University
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
Insight Technology, Inc.
Core Data
Core Data
Kosuke Matsuda
20150920 中国地方db勉強会
20150920 中国地方db勉強会
yoyamasaki
MySQLとオープンソースビジネスの10年、そして未来へ
MySQLとオープンソースビジネスの10年、そして未来へ
Open Source Software Association of Japan
楽天における大規模データベースの運用
楽天における大規模データベースの運用
Rakuten Group, Inc.
Windows環境でのMySQL
Windows環境でのMySQL
yoyamasaki
Spiderの最新動向 20130419
Spiderの最新動向 20130419
Kentoku
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
sakaik
Spiderの最新動向 20131009
Spiderの最新動向 20131009
Kentoku
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
Masayuki Ozawa
比べてみよう リレーショナル vs ドキュメント.pptx
比べてみよう リレーショナル vs ドキュメント.pptx
MariMurotani
Rakuten New MySQL Backup System With Xtrabackup
Rakuten New MySQL Backup System With Xtrabackup
Rakuten Group, Inc.
20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration
Insight Technology, Inc.
Similar to もしOracleDBAがMySQLを管理することになったときの注意点など
(20)
About NoSQL
About NoSQL
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
20190530 osc hokkaido_public
20190530 osc hokkaido_public
LINEのMySQL運用について
LINEのMySQL運用について
My sql security (暗号化)
My sql security (暗号化)
C32 DB Performance on Cloud by 安藤賀章
C32 DB Performance on Cloud by 安藤賀章
Docomo Cloud Package
Docomo Cloud Package
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
Core Data
Core Data
20150920 中国地方db勉強会
20150920 中国地方db勉強会
MySQLとオープンソースビジネスの10年、そして未来へ
MySQLとオープンソースビジネスの10年、そして未来へ
楽天における大規模データベースの運用
楽天における大規模データベースの運用
Windows環境でのMySQL
Windows環境でのMySQL
Spiderの最新動向 20130419
Spiderの最新動向 20130419
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
Spiderの最新動向 20131009
Spiderの最新動向 20131009
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
db tech showcase 2019 SQL Database Hyperscale 徹底分析 - 最新アーキテクチャの特徴を理解する
比べてみよう リレーショナル vs ドキュメント.pptx
比べてみよう リレーショナル vs ドキュメント.pptx
Rakuten New MySQL Backup System With Xtrabackup
Rakuten New MySQL Backup System With Xtrabackup
20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration
もしOracleDBAがMySQLを管理することになったときの注意点など
1.
もしOracleDBAがMySQL を管理 することになったときの注意点など 2019/12/04 JPOUG in
15 minutes #9 Kentaro Kitagawa(@keny_lala)
2.
自己紹介 名前: Kentaro Kitagawa 仕事:
とある会社de DBA 担当: MySQL,Oracle,Redis twitter: @keny_lala
3.
1年ほど前
4.
前提 資料の中のMySQLはInnoDB ストレージエンジン とします ストレージエンジン 出典: https://dev.mysql.com/doc/refman/5.6/ja/glossary.html MySQL
データベースのコンポーネントの1 つ。データの格納、更 新、および照会という低レベル作業を実行します。MySQL 5.5 以降で は、InnoDB が新しいテーブルのデフォルトストレージエンジンであ り、MyISAM の代替となるものです。メモリー使用とディスク使用、 読み取り速度と書き込み速度、速度と堅牢性など、異なる要因間トレ ードオフのために異なるストレージエンジンが設計されています。各 ストレージエンジンが特定のテーブルを管理するので、InnoDB テー ブル、MyISAM テーブルなどと呼びます。 “ “
5.
アジェンダ フルスキャンの注意点 ロックの注意点 メタデータロック ReadCommitedでの行ロック
6.
フルスキャンでの注意点
7.
Oracleのフルスキャン TABLE ACCESS FULL INDEX
FAST FULL SCAN マルチブロックリード(db_ le_multiblock_read_count) ダイレクトパスリード Parallel Query(EE)
8.
MySQLのフルスキャン Type: ALL ・・テーブルフルスキャン Type:
INDEX ・・インデックスフルスキャン シングルページリード
9.
JOINアルゴリズム Oracle Nested Loop Join Hash
Join Merge Join MySQL Nested Loop Join
10.
フルスキャンのJOIN Oracle HASH JOINでマルチブロックリード
11.
MySQL Nested Loop JOINでシングルページリード
12.
フルスキャンのJOIN Oracleはフルスキャンを最適化する機能がある OracleとMySQLでは、速度にかなりの違いが出る 部分 MySQLのクエリチューニングするときは、Nested Loop Joinしかないこととシングルページリードし かないことを意識して、フェッチする行やページ へのアクセス量を減らすこと。インデックス設計 も必須。 (そもそもフルスキャンはだめ絶対。)
13.
MySQL 8.0+ Hash Join
(MySQL8.0.18+) Indexのないカラムの等価結合に動作する InnoDB table Non locking parallel reads CHECK TABLE or SELECT COUNT(*) FROM tbl がパラレルで実行可能 @atsuizoさんのブログ MySQL 8.0.14でSELECT COUNT(*)が加速する!- 「innodb_parallel_read_threads」検証その1
14.
ロックでの注意点
15.
MySQLのロックといえば、、 クラスタインデックス(Oracleでいう索引構成表)で管理されていて、走 査したレコード全てにロックをとる。 MySQLはレコードロックだが、それ以外に特殊なロックがある。 ギャップロック・・インデックスレコード間にあるギャップのロック ネクストキーロック・・インデックスレコードに対するレコードロック と、そのインデックスレコードの前にあるギャップに対するギャップロ ックとを組み合わせたもの たとえば、SELECT * FROM
t0 WHERE col=2 FOR UPDATE; でcolカラムにインデ ックスがない場合、フルスキャンになる。そのときにすべての行でロッ クがとられる
16.
今回はこの話ではないので、詳しくは@sh2さんと @yyamasaki1さんの資料をご確認ください。 https://sh2.hatenablog.jp/entry/20140914 https://speakerdeck.com/yoshiakiyamasaki/lt- mysqlfalsegiyatupurotukutonekusutokirotukunituite
17.
ギャップロックとネクストキーロック トランザクション分離レベル Oracle - READ_COMMITED
(Default) MySQL - REPEATABLE_READ (Default) MySQLのトランザクション分離レベルを READ_COMMITED に変更すると、Oracleと同等の行ロ ックになる。ギャップロックとネクストキーロッ クが無効化される。 Oracle開発者がMySQLを使用するときは READ_COMMITED に変更すれば、これらのロックを気 にする必要はない
18.
しかし!! READ_COMMITED にしても、OracleDBAであれば注意 しなくてはいけないロックがある。
19.
メタデータロック OracleでいうTMロックに似たもの 別のトランザクションによって同時に使用されているテーブルでの DDL 操作を防止するタイプのロック。 “ “ オンライン操作への拡張機能は(特にMySQL 5.6
以降)、メタデータ ロックの量を減らすことに注力しています。その目標は、ほかのトラ ンザクションによってテーブルに照会や更新などが行われている間 に、テーブル構造を変更しないDDL 操作(InnoDB テーブルに対する CREATE INDEX やDROP INDEX など) を進行できるようにすること です。 出典: https://dev.mysql.com/doc/refman/5.6/ja/glossary.html “ “
20.
Oracle Tx1 Tx2 Transaction Start. INSERT
t0; TRUNCATE t0; <- Waiting Commit; Done Tx2のTruncateは待たされる (DDL_LOCK_TIMEOUT)。Tx1のcommit後、 Truncateが実行される。
21.
Oracle Tx1 Tx2 Transaction Start. SELECT
t0; TRUNCATE t0; <- NoWait Commit; Tx2のTruncateは待たされない。
22.
MySQL Tx1 Tx2 BEGIN; INSERT t0; TRUNCATE
t0; <- Waiting Commit; Done Tx2のTruncateは待たされる。Tx1のcommit後実行 される。
23.
MySQL Tx1 Tx2 BEGIN; SELECT t0; TRUNCATE
t0; <- Waiting Commit; Done Tx2のTruncateは待たされる。Tx1のcommit後実行 される。 Non BlockingなSELECTでもロック取得
24.
メタデータロック トランザクション中にSELECTしたテーブル(Non Blocking Read)は、トランザクション中は共有メタ データロックを取得する。 トランザクション終了後、その共有メタデータロ ックは開放される 共有メタデータロックは競合しないが、DDLなど では排他メタデータロックを取得するために待機 する。 よって、ロングトランザクションがある場合の DDLは注意するべき。
25.
さらに注意してほしいこと。。
26.
MySQL Tx1 Tx2 Tx3
Tx4 BEGIN; - BEGIN; - SELECT t0; - - - - TRUNCATE t0;-Waiting - - - - SELECT t0;-Waiting - - - BEGIN; - - SELECT t0;-Waiting 排他メタデータロック取得するために待機した以 降のSELECTがすべて待機される(共有メタデータロ ックが取得できないため)
27.
(;´艸`)ぁぁぁ
28.
ロックの待機時間はlock_wait_timeoutオプション で管理。 デフォルト31536000秒(1年) セッション単位で小さな値にして、DDLするこ とを推奨。 今回はTRUNCATEでしたが、複数テーブルに跨る FunctionやTriggerなど作成するときはより注意。 OracleはデフォルトでNOWAIT句が裏でつくよう なので、ロック取得できないと即時エラー SQL> TRUNCATE TABLE
t0; TRUNCATE TABLE t0 * 行1でエラーが発生しました。: ORA-00054: リソース・ビジー。NOWAITが指定されているか、タイムアウトしました
29.
メタデータロックを確認する方法 show processlistのState ロック待ちしているスレッドを確認できる mysql> show
processlist; (中略) +-----+---------+--------+----------------------------------+--------------------+ | Id | Command | Time | State | Info | +-----+---------+--------+----------------------------------+--------------------+ | 1962| Query | 5 | Waiting for table metadata lock | TRUNCATE TABLE t0 | Performance Schema のmetadata_locksテーブル (MySQL5.7+) ロックを取得されているテーブルを表示
30.
Read Commitedの行ロックの注意点
31.
tx_isolation=READ-COMMITTED だとGap Lock とNext
Key Lockは無効化 DELETE WHERE col=1 → Type: ALL だと、col=1 だけ をロックする しかし、MySQLはステートメント実行時に全行ロ ック(走査した行をロック)して、最後にa=1に一 致しない行のロックを開放する動きとなる Oracleはステートメント実行中もa=1に一致した行 のみをロックする よって、REPEATABLE READと同様にINDEXを貼 のが得策である
32.
Oracle(フルスキャンのDELETE) Tx1 Tx2 Transaction Start.
Transaction Start. DELETE t0 WHERE col=1; DELETE t0 WHERE col=2; <- NoWait MySQL(フルスキャンのDELETE) Tx1 Tx2 Transaction Start. Transaction Start. DELETE t0 WHERE col=1; DELETE t0 WHERE col=2; <- Waiting
33.
まとめ MySQLはフルスキャンは遅い。 シングルページリードしかないことを意識して、必ずインデ ックスをつかって、フェッチする行やページへのアクセス量 を減らすこと。 Nested Loop Joinしかないことを前提にインデックス設計す る。 MySQL
8.0+ は速くなりつつある メタデータロック オンラインで日時TRUNCATEする処理がある時、ロングト ランザクションと重ならないことを注意。スレッドが大幅に 詰まる可能性がある。 tx_isolation=ReadCommitedでも適切なインデックスが必要 Oracle的なロックのとり方ではないので、Oracle脳で考え ると危険
Download now