n対1 レプリケーション + optimizer hint
Post on 07-Jan-2017
933 Views
Preview:
TRANSCRIPT
Multi-source Replication on MySQL 5.7 GA
https://dev.mysql.com/doc/refman/5.7/en/replication-multi-source.html
• 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
top related