38
N 対 1 対対対対対対対対 + Optimizer Hint 2015/11/20 MySQL Casual Talks vol.8 do_aki

N対1 レプリケーション + Optimizer Hint

  • Upload
    doaki

  • View
    926

  • Download
    0

Embed Size (px)

Citation preview

N 対 1 レプリケーション

+ Optimizer Hint2015/11/20

MySQL Casual Talks vol.8

do_aki

@do_aki

@do_aki

http://do-aki.net/

MasterA

MasterC

SlaveA+B+C

N:1 Replication

MasterB

MasterA

MasterC

SlaveA+B+C

N:1 Replication

MasterB

MasterA

MasterC

SlaveA+B+C

N:1 Replication

MasterB

MasterA

MasterC

SlaveA+B+C

N:1 Replication

MasterB

MasterA

MasterC

SlaveA+B+C

N:1 Replication

MasterB

MasterA

MasterC

SlaveA+B+C

N:1 Replication

MasterB

N1Repl

近況報告

動いてます

無停止稼働 1 年 通算 4 年

Multi-source Replication on MySQL 5.7 GA

https://dev.mysql.com/doc/refman/5.7/en/replication-multi-source.html

MasterA

MasterC

SlaveA+B+C

Multi-source Replication

MasterB

MasterA

MasterC

SlaveA+B+C

Multi-source Replication

MasterB

channel1

channel2 channel

3

MasterA

MasterC

SlaveA+B+C

Multi-source Replication

MasterB

channel1

channel2 channel

3

GTID 不要!

Use The Multi-source Replication,

Luke.

/****************** * *  “いつもの” *  ここまで * *******************/

hiro do

突然ですが

query cache

• SET query_cache_type = 0; // OFF• SET query_cache_type = 1; // ON• SET query_cache_type = 2; // DEMAND

• SELECT SQL_CACHE * FROM xxx ……• SELECT SQL_NO_CACHE * FROM xxx ……

ステートメント単位で制御できるといえば

Optimizer Hints (>=5.7)• optimizer_switch => Global/Session

• Optimizer Hints => Statement

• SELECT /*+ HINT(target)*/ * FROM …

• INSERT … SELECT /*+ HINT */ …• UPDATE /*+ HINT */ …

Optimizer Hints Available

BKA/NO_BKA BNL/NO_BNL MRR/NO_MRR NO_ICP NO_RANGE_OPTIMIZATION 蝉SEMIJOIN / NO_SEMIJOIN SUBQUERY QB_NAME MAX_EXECUTION_TIME

SELECT SQL_NO_CACHE /*+ HINT */ * FROM …

SELECT /*+ HINT */ SQL_NO_CACHE * FROM …

SELECT /*+ HINT */ /*!40001 SQL_CACHE */ FROM …

SELECT /*+ HINT *//*!40001 SQL_CACHE */ FROM …

SELECT SQL_NO_CACHE /*+ HINT */ * FROM …

SELECT /*+ HINT */ SQL_NO_CACHE * FROM …

SELECT /*+ HINT */ /*!40001 SQL_CACHE */ FROM …

SELECT /*+ HINT *//*!40001 SQL_CACHE */ FROM …

NG: Hint が SELECT の直後でないので効かない

OKOK

NG: スラッシュが連続するためパースエラー

query cache からすると別クエリ

SELECT /*+ MAX_EXECUTION_TIME(1000) */ SQL_CACHE * FROM table;

SELECT /*+ MAX_EXECUTION_TIME(2000) */ SQL_CACHE * FROM table;

MAX_EXECUTION_TIME

• クエリ実行にタイムアウトを設定• 5.7.8 より前は MAX_STATEMENT_TIME

mysql> SELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM big_table;ERROR 3024 (HY000): Query execution was interrupted, maximum statement execution time exceeded

MySQL5.7 じゃないけど MAX_EXECUTION_TIME

を使いたい人に

• N:1 Replication 今も動いてるよ

• Optimizer Hint 便利だね

• MySQL5.7 なくても、クエリ単位でタイムアウト設定できるよ

おしまい