LockはRDBMSには不可欠ですが、Dead Lockは出来るだけ回避したいLock。
SHOW ENGINE INNODB STATUS以外でもMySQL5.6からログに記録出来るようになってます。

mysql> show variables like 'innodb_print_all_deadlocks';

+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| innodb_print_all_deadlocks | OFF   |
+----------------------------+-------+
1 row in set (0.00 sec)


mysql> set innodb_print_all_deadlocks=ON;

ERROR 1229 (HY000): Variable 'innodb_print_all_deadlocks' is a GLOBAL variable and should be set with SET GLOBAL

mysql> set global innodb_print_all_deadlocks=ON;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'innodb_print_all_deadlocks';

+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| innodb_print_all_deadlocks | ON    |
+----------------------------+-------+

1 row in set (0.00 sec)

 
mysql>

参考: http://thinkit.co.jp/story/2013/11/19/4670/page/0/1


Hadoop Conf 2014 Japan簡易メモ

2014/7/8に開催されたHadoop Conference 2014に参加してきました。
登録者数1,300人という事でした。5~6年前にHadoopがだんだんと自分の身の回りで、RDBMSに代る大規模データ解析システムで使われ始めてから
それなりに月日が過ぎましたが、改めて、日本におけるHadoopコミュニティの進化を感じることが出来たセミナーでした。
これからも、RDBMS&KVSとで共存しがなら、ビジネスサポートが進化していくと良いですね。
余談ですが、このようなセミナーをサポートしてくれているRecruit Technologyさんは太っ腹だな。。。と思いました。

hadoop

[ Big Data on Virtual Environment ]

1. Easy Provisioning
2. Easy Migration & Replacement
3. Reduce Facility Cost
4. Cost Reduction

1) BDD as a Serviceの検討
HADOOP + SPARK + Sentryの組み合わせを利用した、仮想サーバー上のBIG Data解析基盤の提供。
MapReduceの代わり。基本Searchは物理で提供しているので、Virtual環境でも同等のサービスを
提供するのも良い。(SPARK入れるとメモリーに展開してくれるみたい)

SPARK
SPARKは注目な技術です。
http://spark.apache.org/
http://www.cloudera.co.jp/blog/putting-spark-to-use-fast-in-memory-computing-for-your-big-data-applications.html
http://spark-summit.org/wp-content/uploads/2013/10/Feng-Andy-SparkSummit-Keynote.pdf

Sentry for Authentication (認証連携) Kerberos
会社でのアカウント管理やコンプライアンス対応には此方が便利そうです。
https://blogs.apache.org/sentry/

Splunkなどは優秀ですが、自分でログ解析作るのであれば・・・
お金が無いサービスでログ解析のニーズがあったら、サービスレベルや柔軟性は下がるかもしれませんが,
廉価版のサービスも提供すると利用者の選択肢が増えて良いのかも。但し、OPEXが増えるのであればNG…
Norikura+Fluentd+kibana+elasticsearch

https://github.com/norikra/fluent-plugin-norikra
http://www.slideshare.net/recruitcojp/20140709-lt 
http://dev.classmethod.jp/cloud/aws/block_dos_attack_by_norikra/
http://blog.excale.net/index.php/archives/1929
http://eure.jp/blog/fluentd_elasticsearch_kibana/

※Other Interesting Information
Evolution of Impala – Hadoop
http://www.slideshare.net/Cloudera_jp/evolution-of-impala-hcj2014
Recommendation Engine
http://www.slideshare.net/MapR_Japan/mahoutsolr-hadoop-conference-japan-2014
Basic Information
http://www.slideshare.net/Cloudera_jp/hadoop-hcj2014
E-Book for Cloudera (FREE)
http://www.oreilly.co.jp/books/9784873116723/


RDBMSを運用していて、Queryでオブジェクトの確認をしたい場合がありますが、
information_schema.table_constraintsでは外部キーなどのオブジェクト依存関係を
確認する事が出来ます。

mysql> select @@version;
+------------+
| @@version  |
+------------+
| 5.6.19-log |
+------------+
1 row in set (0.00 sec)

mysql>

特定データベースにてFK制約を確認する方法。

mysql> SELECT * FROM information_schema.table_constraints
    -> WHERE table_schema = 'sakila'
    -> AND constraint_type='FOREIGN KEY';
+--------------------+-------------------+---------------------------+--------------+---------------+-----------------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME           | TABLE_SCHEMA | TABLE_NAME    | CONSTRAINT_TYPE |
+--------------------+-------------------+---------------------------+--------------+---------------+-----------------+
| def                | sakila            | fk_address_city           | sakila       | address       | FOREIGN KEY     |
| def                | sakila            | fk_city_country           | sakila       | city          | FOREIGN KEY     |
| def                | sakila            | fk_customer_address       | sakila       | customer      | FOREIGN KEY     |
| def                | sakila            | fk_customer_store         | sakila       | customer      | FOREIGN KEY     |
| def                | sakila            | fk_film_language          | sakila       | film          | FOREIGN KEY     |
| def                | sakila            | fk_film_language_original | sakila       | film          | FOREIGN KEY     |
| def                | sakila            | fk_film_actor_actor       | sakila       | film_actor    | FOREIGN KEY     |
| def                | sakila            | fk_film_actor_film        | sakila       | film_actor    | FOREIGN KEY     |
| def                | sakila            | fk_film_category_category | sakila       | film_category | FOREIGN KEY     |
| def                | sakila            | fk_film_category_film     | sakila       | film_category | FOREIGN KEY     |
| def                | sakila            | fk_inventory_film         | sakila       | inventory     | FOREIGN KEY     |
| def                | sakila            | fk_inventory_store        | sakila       | inventory     | FOREIGN KEY     |
| def                | sakila            | fk_payment_customer       | sakila       | payment       | FOREIGN KEY     |
| def                | sakila            | fk_payment_rental         | sakila       | payment       | FOREIGN KEY     |
| def                | sakila            | fk_payment_staff          | sakila       | payment       | FOREIGN KEY     |
| def                | sakila            | fk_rental_customer        | sakila       | rental        | FOREIGN KEY     |
| def                | sakila            | fk_rental_inventory       | sakila       | rental        | FOREIGN KEY     |
| def                | sakila            | fk_rental_staff           | sakila       | rental        | FOREIGN KEY     |
| def                | sakila            | fk_staff_address          | sakila       | staff         | FOREIGN KEY     |
| def                | sakila            | fk_staff_store            | sakila       | staff         | FOREIGN KEY     |
| def                | sakila            | fk_store_address          | sakila       | store         | FOREIGN KEY     |
| def                | sakila            | fk_store_staff            | sakila       | store         | FOREIGN KEY     |
+--------------------+-------------------+---------------------------+--------------+---------------+-----------------+
22 rows in set (0.00 sec)

特定のテーブルの外部キー制約のみ確認

mysql> SELECT * FROM information_schema.table_constraints
    -> WHERE table_schema = 'sakila'
    -> AND table_name = 'customer'
    -> AND constraint_type='FOREIGN KEY';
+--------------------+-------------------+---------------------+--------------+------------+-----------------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME     | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE |
+--------------------+-------------------+---------------------+--------------+------------+-----------------+
| def                | sakila            | fk_customer_address | sakila       | customer   | FOREIGN KEY     |
| def                | sakila            | fk_customer_store   | sakila       | customer   | FOREIGN KEY     |
+--------------------+-------------------+---------------------+--------------+------------+-----------------+
2 rows in set (0.00 sec)

特定のテーブルの制約を確認

mysql> SELECT * FROM information_schema.table_constraints
    -> WHERE table_schema = 'sakila'
    -> AND table_name = 'customer';
+--------------------+-------------------+---------------------+--------------+------------+-----------------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME     | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE |
+--------------------+-------------------+---------------------+--------------+------------+-----------------+
| def                | sakila            | PRIMARY             | sakila       | customer   | PRIMARY KEY     |
| def                | sakila            | fk_customer_address | sakila       | customer   | FOREIGN KEY     |
| def                | sakila            | fk_customer_store   | sakila       | customer   | FOREIGN KEY     |
+--------------------+-------------------+---------------------+--------------+------------+-----------------+
3 rows in set (0.00 sec)

mysql>


■ Windwosのパフォーマンスモニタで確認する項目

・SQLSERVERで使用しているドライブの下記の項目
\PhysicalDisk()\Avg. Disk Queue Length
\PhysicalDisk()\Disk Reads/sec
\PhysicalDisk()\Disk Writes/sec

・CPU
\Processor(_Total)\% Processor Time

・SQLのキャッシュヒット率
\SQLServer:Buffer Manager\Buffer cache hit ratio

SQL Statistics
・Batch Requests/sec
  →秒間のコマンド数(問合せのクエリ以外のコマンドもカウントされるので、
   実際のクエリ発行数ではありませんが、利用状況を把握できます)

Buffer Manager
 ・Page life expectancy
  →DB上にデータを保持している時間 300秒を下回っているとメモリが足りていない可能性

Locks
 ・Lock Requests/sec
 ・Lock Waits/sec
  →ロック待ち

Access Methods
 ・Index Searches/sec
 ・Probe Scans/sec
 ・Range Scans/sec
 ・Full Scans/sec
  →Full Scan(テーブルスキャン)が多いと適切なインデックスが無い可能性

■ディスクのパフォーマンス測定ツールとして
 CrystalDiskMark
 可能であれば、ファイルサイズ 1000MBで
 どれくらいのパフォーマンスが出るストレージか確認。

その他参考サイト
http://msdn.microsoft.com/ja-jp/magazine/cc135978.aspx

・不足インデックスのコスト
・I/O に関してコストのかかるクエリ
・CPU に関してコストのかかるクエリ

その他、DBのオブジェクト確認用スクリプト

select
SU.NAME,
(SELECT
 CASE SP.action
          WHEN '26' THEN 'REFERENCES'
          WHEN '178' THEN 'CREATE FUNCTION'
          WHEN '193' THEN 'SELECT'
          WHEN '195' THEN 'INSERT'
          WHEN '196' THEN 'DELETE'
          WHEN '197' THEN 'UPDATE'
          WHEN '198' THEN 'CREATE TABLE'
          WHEN '203' THEN 'CREATE DATABASE'
          WHEN '207' THEN 'CREATE VIEW'
          WHEN '222' THEN 'CREATE PROCEDURE'
          WHEN '224' THEN 'EXECUTE'
          WHEN '228' THEN 'BACKUP DATABASE'
          WHEN '233' THEN 'CREATE DEFAULT'
          WHEN '235' THEN 'BACKUP LOG'
          WHEN '236' THEN 'CREATE RULE'
          ELSE '判別不能'
   END )AS '権限',
SO.NAME,
(select
CASE SO.XTYPE
  WHEN 'U' THEN 'テーブル'
  WHEN 'P' THEN 'ストアドプロシジャー'
  ELSE 'それ以外'
  END ) AS '種類',
SO.CRDATE
from sysusers SU,sysprotects SP, sysobjects SO
where SU.UID = SP.UID AND SO.ID = SP.ID AND SO.XTYPE IN('U','P')
order by SU.NAME,SO.CRDATE desc
--order by SO.CRDATE desc,SU.NAME

殆ど、Linuxサーバー上でしか利用してなかったので、
気付きませんでしたが、MySQL Workbenchがかなり進化してました。

Versionは6.0
 mysqluc> mysqlserverinfo  --version
 MySQL Utilities mysqlserverinfo.exe version 1.4.3 (part of MySQL Workbench Distribution 6.0.0)
 License type: GPLv2

 mysqluc>

MySQL Workbenchは、データベースアーキテクト、開発者、DBAのための統合ビジュアルツールです。
MySQL Workbenchは、データモデリング、SQL開発、およびサーバー設定、ユーザー管理、バックアップ
などの包括的な管理ツールを提供します。MySQL WorkbenchはWindows、Linux、Mac OSで利用可能です。

Related PDF files
MySQL Workbench データベース設計、開発、管理、マイグレーション
Guide to Migrating from Microsoft SQL Server to MySQL

Over View

workbbench-overview

USER PRIVILEDGES

user

Performance Overview
workbbench

Performance Details
performance