タグ

mysqlに関するarray08_12のブックマーク (46)

  • MySQLのEXPLAIN - Qiita

    クエリを最適化するということは、 ・書き換える前と後でクエリの実行結果が同じになる ・EXPLAINがよりよい実行結果を表示する クエリの実行計画を調べるためには、 SELECT文の先頭に「EXPLAIN」をつけて実行する フィールド id/select_type クエリの種類を表すもの。 クエリの種類とはJOIN、サブクエリ、UNIONおよびそれらの組み合わせのことで、 select_typeの内容もその組み合わせから導き出されたものである。 JOINの場合 MySQLが実行できるJOINの種類は「Nested Look Join(NLJ)」の一種類しかない。 テーブルを一つずつ順に処理していく方式のこと。 クエリがJOINだけから構成される場合、select_typeは「SIMPLE」と表示される。 SIMPLEではidが全て同じ値になる。 EXPLAINの出力の順序がどのテーブルから

    MySQLのEXPLAIN - Qiita
  • tuningathon5_mysql56

    1 チューニンガソン5の復習 MySQL 5.6 新機能編 MyNA(日MySQLユーザ会)会 2013年3月 2013/03/15 平塚 貞夫 2 自己紹介 • DBエンジニアやってます。専門はOracleMySQL。 – システムインテグレータで主にRDBMSのトラブル対応をしています。 – 仕事の割合はOracleMySQL=6:4ぐらいです。 • Twitter:@sh2nd • はてな:id:sh2 • • 写真は実家で飼っているミニチュアダックスのオス、アトムです。 3 前回のあらすじ 4 前回のあらすじ • チューニンガソン5の復習 MySQL 5.5 チート編 http://d.hatena.ne.jp/sh2/20130304 ベースライン ベースライン (2 回目 ) (1) バッファプール拡大 (2) クエリキャッシュ削除回避 (3)Bug#42197 対処 (

  • MySQLでAUTO_INCREMENTの値をチェック、初期値変更

    よく使うけど使うたび忘れるのでメモ AUTO_INCREMENTの値を確認する SHOW TABLE STATUS LIKE 'テーブル名'; AUTO_INCREMENTの値を変更する ALTER TABLE テーブル名 AUTO_INCREMENT=数字; 指定した数字が次に振られる番号になる

  • MySQLでViewを使うときに注意すること - よかろうもん!

    MySQL 5系からViewが利用可能となりました。 そんなView機能を利用していて、ネットワーク構成が変更になった場合には気をつけておかなければならないことがあります。 それは、DEFINER節とSQL SECURITY節についてです。 この2つの節の説明は以下のように述べられています。 DEFINER節およびSQL SECURITY節はビューの呼び出しにおいて、アクセス権限をチェックするとき使用すべきセキュリティーコンテキストを規定します。 参考:http://aqua.sun.ddns.vc/free/docs/mysql5.1/views.html 結局はユーザによるアクセス制限だけではなく、View毎にも柔軟なアクセス制御が可能となるということでしょう。#たぶん。 例えば、interuユーザが登録さており、SHOW VIEW権限を持っていたとします。 そんな設定であっても、in

    MySQLでViewを使うときに注意すること - よかろうもん!
  • 『MySQL初心者に贈るインデックスチューニングのポイントまとめ2014』

    サイバーエージェント公式ブログをご覧の皆さんこんばんは、インフラ&コアテク部の須藤(@strsk)です。普段はAmebaのソーシャルゲーム全般のインフラを見つつ、日語ラップの啓蒙をしながら弊社社員を素材にコラ画像をつくったりしています。好きなAAは麻呂です。 はい、というわけで今回はMySQLインデックスチューニングの基的な流れについてまとめてみました。 ソーシャルゲームは更新も参照もめちゃくちゃ多いです。数秒のレプリケーション遅延も致命的なので適切なテーブル、クエリとインデックス設計が重要です。(何でもそうですけど)インデックスが多くなると更新コストなどが懸念されますが、インデックスが正しく使われていないクエリを放置している方が悪です。そんなこんなで、割と例も偏ったりしてるかもしれませんがあしからず。 前提としてはInnoDBを想定しています。MyISAMはほとんど使っていません。

    『MySQL初心者に贈るインデックスチューニングのポイントまとめ2014』
  • 知っておくと便利なMySQL関数

    こんにちは、初夏なのにもう夏バテ気味のinoueです。今日もオクラ買って帰ろうっと。 さて、知っておくと便利なMySQL関数 FIND_IN_SET のお話です。 基的には標準SQLでクエリは書いたほうがいいのですが、MySQL固有の関数なども状況に応じて利用すると 作業効率がアップするので、そんな一例を今回ご紹介します。 http://dev.mysql.com/doc/refman/5.1/ja/string-functions.html より引用: FIND_IN_SET(str,strlist) ストリング str が N サブストリングで構成されるストリング リスト strlist 内にある場合は、1 から N の範囲の値を戻します。 ストリング リストは、‘,’ 文字で区切られたサブストリングで構成されたストリングです。 idtypes

    知っておくと便利なMySQL関数
  • MySQLでトランザクションの4つの分離レベルを試す - FAT47の底辺インフラ議事録

    トランザクションとは 1つの作業単位として扱われるSQLクエリの集まりです。 複数のUPDATEやINSERTをひとつの集まりとして、 それらのクエリがすべて適用できた場合のみデータベースに反映します。 ひとつでも適用に失敗したクエリがあった場合は、そのまとまりすべてのクエリの結果は反映しません。 ACID特性 トランザクション処理に求められる4つの特性です。 原子性 (Atomicity) トランザクションに含まれる手順が「すべて実行されるか」「すべてされないか」のどちらかになる性質。 一貫性 (Consistency) どんな状況でもトランザクション前後でデータの整合性が矛盾なく保たれる性質。 分離性 (Isolation) トランザクション実行中は、処理途中のデータは外部から隠蔽されて他の処理に影響を与えない性質。 永続性 (Durability) トランザクションが完了したら、シス

    MySQLでトランザクションの4つの分離レベルを試す - FAT47の底辺インフラ議事録
  • MySQLのgroup_concatで複数レコードを1行にまとめる - 文系プログラマによるTIPSブログ

    実は非常に有用で、この機能が実は欲しかった!と言う方が続出する機能なのですよね〜 全然知らなかったのですが、mysqlでは複数レコードを1行にまとめる事ができます。 複数行をカンマ区切りにしたり、結構有効に使えそうです。 テーブル・データの準備 テーブル データ 実際に実行してみる 普通にselectしてみる group_concatしてみる group_concat + distinct group_concat + group by テーブル・データの準備 早速サンプルコードを。 テーブル mysql> create table gc1(id int auto_increment, uid int, name varchar(30), primary key(id))engine=innodb charset=utf8mb4; Query OK, 0 rows affected (0.

    MySQLのgroup_concatで複数レコードを1行にまとめる - 文系プログラマによるTIPSブログ
  • Devsの常識、DBAは非常識

    1. MySQL Admin が見た Devs の常識、 DBA は非常識 2013/09/14 yoku0825@MyNA PHP Conference 2013 2. \こんにちは!/ ● yoku0825 ● とある企業の DBA ● MySQL 歴 5 年くらい ● オラクれない ● ポスグれない ● 嫁の夫 ● せがれの父 ● 日 MySQL ユーザ会 (MyNA) のスベり担当 3. \しゃべること!/ ● 日常的に MySQL のソースコードに触れる変態 DBA がフツーの Devs に投げた愛のマサカリ集 ( のつもり ) ● ウチの開発言語は PHP > Java >> Ruby らしいです ● ウチでは DBA がサーバーの構築、 Devs が設計・ テーブル構築・運営、 DBA はトラブルシュートや改 善提案 ( 運用 ) 、というサイクルで回しています。

    Devsの常識、DBAは非常識
  • MySQLのEXPLAINを徹底解説!!

    以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ

    MySQLのEXPLAINを徹底解説!!
  • MySQLでクエリチューニングことはじめ

    最近、寒暖の差が激しいですがみなさん体調は崩されていないでしょうか? こんにちわ。モニプラ for Facebookを担当しています高橋です。 サービス開始当初は問題なかったものの稼働が高くなりデータ量が多くなって クエリのパフォーマンスが悪化すること…よくありますよね? 今回はクエリチューニングの基的な手順とケース別に解決方法を解説したいと思います。 クエリチューニングの手順 1.スロークエリログで問題のクエリをあぶり出す まずはどのクエリが問題なのか特定する必要があります。 アプリケーション側でクエリの実行時間を測定し自前でログを出力しておくというのも手ですが、 お手軽にMySQLの設定で一定時間以上掛かったクエリをログに出力しておくことができます。 スロー クエリ ログ(MySQL 5.1 リファレンスマニュアル) mysqldを–log-slow-queriesオプションつきで起

  • MySQLをインストールしたら、必ず確認すべき10の設定 | Yakst

    MySQL Performance Blogの翻訳。インストール後に必ず設定を確認しなければならない設定パラメータ10つを挙げ、その意味を解説する。MySQLの設定変更時の、一般的な注意点も合わせて。 January 28, 2014 By Stephane Combaudon 我々がパフォーマンス監査の仕事をする時には、MySQLの設定のレビューと改善提案を求められる。大抵の場合、たくさんのオプションがある中でほんのいくつかの設定しか変更するように提案しないことに、多くの顧客は驚く。この記事のゴールは、もっとも重要な設定をいくつか挙げてみることにある。 既にこういった提案は過去にもしているが数年前のもので、それ以来MySQLの世界ではたくさんの変化があったのだ。 話の前に 熟練した人でも、重大なトラブルを引き起こすミスをしでかすことがある。従って、ここに挙げたものを盲目的に適用する前に、

    MySQLをインストールしたら、必ず確認すべき10の設定 | Yakst
  • SYSDATE()とNOW()の違い。

    MySQLには、現在時刻を求める関数としてSYSDATE()とNOW()という2つの関数が実装されている。そして、それらは微妙に動作が違う。SYSDATE()は関数が呼び出された瞬間の時刻を返すのに対して、NOW()はクエリ開始時の時刻を返す。例えば、100秒かかるような長いクエリにおいて両者を利用した場合、SYSDATE()では結果に最大100秒の差が生じるのに対して、NOW()では差が生じない。NOW()では関数が最初に実行された時に結果がキャッシュされ、以降はキャッシュされた値が利用されるからだ。 次のようにSLEEP()を利用するとわかり易いだろう。 mysql> SELECT SYSDATE(), SLEEP(100), SYSDATE(); +---------------------+------------+---------------------+ | SYSDATE(

    SYSDATE()とNOW()の違い。
  • mysqlでいちいちshow databasesとか打つのがめんどい→readlineのマクロで解決 - (ひ)メモ

    MySQLでいちいちshow tables;とか打つのがだるい。\tみたいなalias設定できないのかなぁ http://twitter.com/weboo/status/1658300902 おぉ、readlineのマクロを使えばいいのかー http://twitter.com/weboo/status/1658314333 なるほ!ってことでちょっと設定してみました。 # ~/.inputrc $if mysql "\C-xd": "show databases;" "\C-xt": "show tables;" "\C-xu": "select user,host,password from mysql.user order by user,host;" "\C-xb": "select user,host,db from mysql.db order by user,host;"

    mysqlでいちいちshow databasesとか打つのがめんどい→readlineのマクロで解決 - (ひ)メモ
  • Mysql toranomaki

    カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09Mikiya Okuno

    Mysql toranomaki
  • 全文検索付きMySQL5.0から5.6への移行にまつわるお話をMySQL Casual Talks Vol.5にて発表しました #mysqlcasual - Y-Ken Studio

    2013年10月25日にオラクルで開催された「MySQL Casual Talks Vol.5」に参加しました。 そう、前回の発表での約束を果たすために。という訳で今回は2回目の参加&2度目のトークです。 発表テーマ Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記 MySQL5.0から5.6へ移行するにあたり、全文検索機能をTritonnからmroongaへ乗り換えるというプロジェクトの体験記をお届けします。 発表資料 Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記 from Kentaro Yoshida http://www.slideshare.net/y-ken/mysql-migrate-mysql50-to-mysql56-with-fulltext

    全文検索付きMySQL5.0から5.6への移行にまつわるお話をMySQL Casual Talks Vol.5にて発表しました #mysqlcasual - Y-Ken Studio
  • MySQL5.6の新機能「InnoDB Memcached Plugin」の分離レベルを検証し、ソーシャルゲーム案件に使えそうか検証してみました|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

    ホーム 技術ブログ MySQL5.6の新機能「InnoDB Memcached Plugin」の分離レベルを検証し、ソーシャルゲーム案件に使えそうか検証してみました MySQL5.6の新機能「InnoDB Memcached Plugin」の分離レベルを検証し、ソーシャルゲーム案件に使えそうか検証してみました matsuiです。 先日6/1に行われた第四回札幌MySQL勉強会の中で、MySQL5.6の新機能「InnoDB Memcached Plugin」の分離レベルについて調べてみましたので、記事にしてみたいと思います。 InnoDB Memcached Pluginとは 「InnoDB Memcached Plugin」とは、MySQL5.6から使えるようになった、SQLを使わずMemcachedプロトコルを使ってInnoDBのデータにアクセスするためのものです。 主なメリットはその高

    MySQL5.6の新機能「InnoDB Memcached Plugin」の分離レベルを検証し、ソーシャルゲーム案件に使えそうか検証してみました|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
  • Mysqlの起動に関するメモ - Y's note

    Mac OS Xでの設定 今回はMacOS10.6.5での設定を行いました。 UnixやLinuxとの違いはあると思いますが、多少は参考になるかもしれません。 自動起動設定 起動 /Library/StartupItems/MySQLCOM/MySQLCOM start 停止 /Library/StartupItems/MySQLCOM/MySQLCOM stop 起動/停止 起動 sudo mysqld_safe 停止 mysqladmin -u root -p shutdown 起動確認 mysqladmin ping mysqld is alive rootのpassword設定 これはまず最初にやるべき事ですね。 空passwordはセキュリティ上よろしく無いので、rootのパスワードを変更します。 mysqladmin -u root password 新しいパスワード my.c

    Mysqlの起動に関するメモ - Y's note
  • 「Can't connect to local MySQL server through socket」エラーについて

    ■ このような場合に参考にして下さい MySQLのクライアントソフト(mysql,PHP,Perl他)からMySQLサーバーに接続しようとすると 「Can't connect to local MySQL server through socket '/tmp/mysql.sock'」 のようなエラーが出て接続に失敗する。 ■ 対処方法の前に まずはじめに、エラーメッセージは次の意味を持ちます。 「ソケット'/tmp/mysql.sock'を通じてローカルのMySQLサーバーに接続することが出来ません」 ソケットとはプロセスやネットワーク間の通信機構のことで、MySQLではこのソケットを通じて サーバーとクライアントとが接続されます。ソケットというとポート番号を指定して利用する方法が 思い浮かびますが、ここでは/tmp/mysql.sockというファイルが出てきています。 これはUNIXド

  • MySQLが起動できなくなった件(MacOSX10.6) - かにぱん冒険記

    ターミナルから mysql -u root -p で、MySQLを起動しようとすると ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) っていうエラーが。 このエラーをもとにぐぐってみて、(こことかを参考に) MySQLサーバーが起動していない MySQLサーバーで使っているUNIXソケットとクライアントソフトで使っているUNIXソケットのパスが違う なんらかの理由でソケットファイルが削除されている 特に起動できなくなった直前にmy.cnfとかいじった覚えないし、ソケットファイル格納ディレクトリのパーミンションも問題なさそう... いろいろ試行錯誤した結果、よくわからんので再インスコ。。。 次にここを見てみた。 とりあえずrootのパスワード設定 mysq

    MySQLが起動できなくなった件(MacOSX10.6) - かにぱん冒険記