タグ

関連タグで絞り込む (158)

タグの絞り込みを解除

MySQLに関するmasatsuneのブックマーク (335)

  • メモ:MySQLのLAST_INSERT_IDが遅くなる - gomisの日記

    今日構築してテスト稼動したサーバで、uptimeが3とかになるため調査したら、MySQLが重い。 slow-queryをチェックすると select LAST_INSERT_ID() from table;というqueryに時間がかかってる模様。 ぐぐると、上のqueryは単に以下でいいらしい。 select LAST_INSERT_ID();要は、LAST_INSERT_ID()は文字通り最後にinsertしたIDを返すので、テーブル指定はいらないということ。むしろ、テーブルを指定するとレコードを全部舐めるので重くなる、ということのようだ。 コネクションごとにLAST_INSERT_ID()は保存されるので、(つまり、あるコネクションでinsertしてから別のコネクションでinsertされたとしてもLAST_INSERT_IDは、ちゃんと欲しいIDを返してくる)この指定でかまわないという

    メモ:MySQLのLAST_INSERT_IDが遅くなる - gomisの日記
    masatsune
    masatsune 2011/05/25
     LAST_INSERT_ID
  • DeNAによる大規模なMySQLノンストップ運用の裏側にある、フェイルオーバー自動化ツール

    4月11日から米サンタクララで行われた「MySQL Conference & Expo 2011」。このイベントでDeNAの松信嘉範(まつのぶよしのり)氏が、同社の大規模なMySQLの運用を支えている技術とツールについてのセッション「Automated, Non-Stop MySQL Operations and Failover」を行いました。 プレゼンテーションの中で、社内で利用しているフェイルオーバーの自動化ツールをオープンソース化することにも触れています(英語のドキュメントも作成中とのこと)。 MySQLの大規模運用における自動フェイルオーバーは、特にクラウドでのMySQLの利用が増えるにつれてニーズが高まる分野と思われます。セッションのスライドが公開されていますので、そのポイントを紹介していきます。 自動化されたノンストップなMySQLの運用 ソーシャルゲームでは高可用性が強く求

    DeNAによる大規模なMySQLノンストップ運用の裏側にある、フェイルオーバー自動化ツール
  • 「優れたMySQL DBAを見分ける27+3の質問」に対する回答例

    随分と更新が空いてしまったが、「優れたMySQL DBAを見分ける27+3の質問」に対する回答例(漢バージョン)を紹介しよう。実は質問を掲載した際「難しい!」というコメントが非常に多く、もう少し易しい質問にするべきだったかと思って次のように呟いてみたのだが・・・ 非常に心強くて安心した。さすがに日を代表するMySQLのエキスパートである。出題のレベルは間違ってはいなかった!! そんなわけで、回答の方に移ろう。 MySQLのサーバープロセスはいくつある?ひとつ。mysqldはシングルプロセス・マルチスレッドモデルを採用しているので、"サーバー"プロセスはひとつである。多くの場合、Linuxなどでmysqldを動かす場合には、お供にmysqld_safeも常に動いていることが多いが、mysqld_safeはサーバーではなく、mysqldのためのラッパーであるので数には含めない。 rootユー

    「優れたMySQL DBAを見分ける27+3の質問」に対する回答例
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 24.6 パーティショニングの制約と制限

    このセクションでは、MySQL パーティショニングサポートでの現在の制約と制限について説明します。 禁止されている構造体. 次の構造体はパーティショニング式で許可されません。 パーティショニング式で許可される SQL 関数のリストについては、セクション24.6.3「関数に関連するパーティショニング制限」を参照してください。 算術および論理演算子. 算術演算子 +、-、および * の使用は、パーティショニング式で許可されます。 ただし、結果は整数値または NULL である必要があります (この章のほかの場所で説明しているように、[LINEAR] KEY パーティショニングの場合を除きます。詳細は、セクション24.2「パーティショニングタイプ」を参照してください)。 DIV 演算子もサポートされています。/演算子は使用できません。 ビット演算子 |、&、^、<<、>>、および ~ はパーティシ

  • UNIQE INDEXと JOIN とORDER BY で無用なソートが発生するケースとその回避方法 - LukeSilvia’s diary

    Amazon.co.jp: 実践ハイパフォーマンスMySQLを読んでいたら「クエリチューニング」の章(p. 101)でタイトルにある問題が取りあげられていたので考察。 MySQL のバージョンは「5.0.67」。 サンプルDB サンプルとして、よくある商品と注文のテーブルを使います。 作るのが手間だったので、の例と変えています。あと、説明に関係ないカラム*1も省略しています。 スキーマ > show create table products \G; *************************** 1. row *************************** Table: products Create Table: CREATE TABLE `products` ( `id` int(11) NOT NULL auto_increment, `name` varchar

    UNIQE INDEXと JOIN とORDER BY で無用なソートが発生するケースとその回避方法 - LukeSilvia’s diary
  • ソーシャルゲーム開発者なら知っておきたい MySQL INDEX + EXPLAIN入門|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

    ソーシャルゲーム開発者なら知っておきたい MySQL INDEX + EXPLAIN入門 広く浅くを担当してます、ota です。 技術ブログ第一回から早速流用スライドで申し訳ありませんが、社内勉強会資料として作成した「MySQL INDEX + EXPLAIN入門」です。 当社でもソーシャルゲームの開発を行っていますが、このような大量のデータを使用する・クエリの速度が求められる場合にインデックスは大変重要です。 インデックスの有効な利用にはDB設計者だけではなくプログラマにもある程度の知識が最低限必要となりますが、インデックスについての初心者向け資料があまりないようです。 このスライドではプログラマに知っておいて欲しい以下の基的な点をまとめました。 INDEXを使用する時に気をつけること WHERE句 !=、<>はインデックスが使用できない WHERE句の全てのANDにかかっていないイン

    ソーシャルゲーム開発者なら知っておきたい MySQL INDEX + EXPLAIN入門|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
  • 「INTO OUTFILE」でNULLが¥Nになってまうがな。 - Chocotte de Choo

    タイトルが思わず関西弁になってしまいましたが (゚Д゚)!!! NULLになってるカラムも含めて、 SELECT * FROM ………INTO OUTFILE …… でエクスポートすると、NULLだったところが「¥N」と出力されてしまいます(´・ω・`) 一度出力した後に置換するという手もありますが、出力したファイルの容量がデカイと あまり良い方法にはなりません… そもそも、 MySQLでは空文字とNULLの扱いが異なる …ということを念頭に置いてテーブルを作っておらず、それが悪かったんですよね(´・ω・`) CREATE TABLE文で、あるカラムについて `InnerCode` varchar(20) default NULL, …となっているところを、 `InnerCode` varchar(20) NOT NULL, とすれば、デフォルト文字が空文字になってくれます。 そして、空の

    「INTO OUTFILE」でNULLが¥Nになってまうがな。 - Chocotte de Choo
  • MySQL の pager が便利だった - xykの日記

    mysql のコンソールで grep とか使えないかなぁと思っていたら pager を使えば出来ることを今更知った。 MySQL :: MySQL 5.1 リファレンスマニュアル :: 7.7.2 mysql Commands http://dev.mysql.com/doc/refman/5.1/ja/mysql-commands.html mysql のプロンプトで以下のように pager (または\P) を指定すればよい。 ・grep mysql> pager cat | grep hoge PAGER set to 'cat | grep hoge'・ファイルに保存 mysql> \P cat > ~/dump.txt PAGER set to 'cat > ~/dump.txt'・less mysql> \P less PAGER set to 'less'less の -S オ

    MySQL の pager が便利だった - xykの日記
  • MySQL :: ページャで画面表示を見やすくする [Tipsというかメモ]

    具体的には、以下のようになってしまい、悲しい思いをします。 mysql> select * from KEY_COLUMN_USAGE; emp_user_opt_by_config_id | 1 | NULL | NULL | NULL | | NULL | premiscss | PRIMARY | NULL | premiscss | st emp_user_opt_by_itationals_id | 1 | NULL | NULL | NULL | | NULL | premiscss | PRIMARY | NULL | premiscss | st emp_user_opt_by_itational_id | 1 | NULL | NULL | NULL | | NULL | prepsychoss | PRIMARY | NULL | prepsychoss | ch re

  • slaveからダンプをとった場合のCHANGE MASTER TOについて - メモとかそんな感じなやつ

    MySQLのslaveサーバからcronで一日一回ダンプファイルを取得してて、 そのダンプファイルを使ってどこかのサーバにリストアした場合、 新しくレプリケーションを開始する際に発行するCHANGE MASTER TOコマンドは一体何を指定したらいいんだろう? 例えばmasterサーバでダンプを取得する場合、mysqldumpコマンドのオプションとして 「--master-data=2」を指定してやると、dumpファイル中にCHANGE MASTERコマンドが付加される。 これは非常に便利なんだけど、あくまでshow master statusの値を取っているので slaveサーバでこれつけてもまったく意味がない。 slaveでダンプとるときも、こんな便利オプションないかなーと思ってたんですが、 MySQL 5.5から--dump-slaveってのが追加されるようです。 --dump-sl

    slaveからダンプをとった場合のCHANGE MASTER TOについて - メモとかそんな感じなやつ
  • ソーシャルゲームのためのMySQL入門その2 | BLOG - DeNA Engineering

    こんにちはこんにちは。11インチMacBook Airが欲しくてたまらないiwanagaです。 前回の記事 が幸いにもご好評を頂けた様で非常にうれしいです。嬉しくなって、ついがんばって第2弾を書いてしまいました。引き続き、ソーシャルゲームでよく使われるテーブルタイプ毎にちょっとしたテクニックを紹介していきます。 今回はちょっとライトな感じ&読み物になってしまっていますが「ユーザID単位で1つだけ持つデータ」と「パラメータなどのマスターデータ」についてご説明したいと思います。ちなみに次回はInnoDBのデータ構造の簡単な説明と複合プライマリーキーのデータについて、その次で紹介し損ねたちょっとマニアックなテクニックや性能管理のための手法を紹介することを予定しています。 その前に。。。 先日行われた JAPAN INNOVATION LEADERS SUMMIT で弊社松信が「ソーシャルゲーム

    ソーシャルゲームのためのMySQL入門その2 | BLOG - DeNA Engineering
  • MySQLのRANGEパーティションを使う | 村式流 イッパシエンジニアへの道

    MySQLのRANGEパーティションのお話です。 MySQL5.1からサポートされているパーティショニングですが、ログテーブル等、レコード数が多くなりがちなテーブルに日付でパーティショニングしてます。 最初から遠い未来までのパーティションを切るのは気持ち悪いし、長く運用されるサービスの場合は忘れる可能性もあるのでバッチを回すのがいいと思いますが追加する場合の手順と注意点です。 ・まずはパーティションを作成 CREATE TABLE `mura`.`test1` ( `date` DATE NOT NULL , `name` VARCHAR( 40 ) NOT NULL , `contents` VARCHAR( 255 ) NOT NULL , `created_at` DATETIME NOT NULL ) ENGINE = InnoDB PARTITION BY RANGE (TO_

  • mysqlコマンドをより便利に安全にするための小粒なTIPS集|サイバーエージェント 公式エンジニアブログ

    初めまして。2010年の3月に入社した oinume です。新年1月からウィルス性胃腸炎に罹りながらもなんとかこのエントリーを書いています。今回は、mysqlコマンドに関する自分が今まで学んだ&教えてもらった細かい実践的なTIPSを紹介します。小粒ですが何かの役に立てば幸いです。 edit (¥e)コマンド mysqlプロンプトにいながら任意のエディタでSQLが編集できちゃいます。具体的には、mysqlコマンドでプロンプト待ちの状態で mysql> edit のように edit または ¥e と入力すると、環境変数EDITORで設定してあるエディタが立ち上がりSQLが編集可能になります。編集が終わったらエディタを終了して ; とやればSQLが実行されます。viなどターミナルで動くエディタに慣れている人は長いSQLを編集する時に重宝する機能でしょう。この技は前職の同僚に教えてもらって、以降便

    mysqlコマンドをより便利に安全にするための小粒なTIPS集|サイバーエージェント 公式エンジニアブログ
  • psコマンドでスレッドを表示させたり、スレッドごとのCPU使用率を確認する - 元RX-7乗りの適当な日々

    今更なネタかもしれませんが、psコマンドでは通常プロセス単位での表示となりますが、"man ps"を読んでみたところ、"-L"等のオプションをつけることで、スレッドを表示することもできるようです。 スレッド表示 H   スレッドをプロセスのように表示する。 -L   可能ならば LWP と NLWP カラムをつけてスレッドを表示する。 -T   可能ならば SPID カラムをつけてスレッドを表示する。 m   プロセスの後にスレッドを表示する。 -m   プロセスの後にスレッドを表示する。 Man page of PS では、早速試してみましょうか。 普通に"ps -ef"を実行 $ ps -ef | grep -e mysqld -e PID | grep -v grep UID PID PPID C STIME TTY TIME CMD root 4570 1 0 Dec09 ? 00

    psコマンドでスレッドを表示させたり、スレッドごとのCPU使用率を確認する - 元RX-7乗りの適当な日々
  • 「MySQL Casual Talks vol.1」に参加してきたよ、のメモ - 元RX-7乗りの適当な日々

    あまりカジュアルではなかったwという説もありますが、結構面白かったです。 1人の発表が10分と、LT(Lightning Talks)風な感じだったこともあり、聴くのに必死だったのですが、少々メモを取ったので貼り付けておきます。(取れたところは少ない...) # 間違っている部分もあるかもしれませんが、そこはご了承を。 # きっと近いうちに皆さんの発表資料が出揃うだろうとは思いますが。出揃ったらリンク付けようw ちなみに、余談ですが懇親会も、かなり盛り上がって楽しかったですね! 個人的には、前から色々お世話になっていた、"刺身☆ブーメラン"の金子さん(id:a666666 / @kyanny)と色々お話できたのは良かったです。 show innodb status (@myfinder) show innodb status from Tatsuro Hisamori 呼び方: いのでーび

    「MySQL Casual Talks vol.1」に参加してきたよ、のメモ - 元RX-7乗りの適当な日々
  • InnoDBのAUTO_INCREMENTが遅い問題は5.1でどう改善されたのか

    MySQL5.1のGA版が出てから8ヶ月余りが経過しましたが、まだ5.0(あるいはそれ以前)をメインで使っている方も多いのではないでしょうか。5.1の何が良いのかいまいち分からないという方も多いかもしれません。そんな方にとって分かりやすい例の1つが、「5.1でInnoDBのAUTO_INCREMENT性能が大幅に改善された」という点です。私は仕事柄Web系の技術者の方と話をする機会もよくありますが、意外と知られていない改善なので(まさにトラフィックと同時接続数の多いWeb系システムのための改善なのに…)この機会に取り上げることにします。 簡単に言えば、AUTO_INCREMENTを持つテーブルに対してINSERTをするクライアント数が数十、数百と増えていった時に、従来はスループットが指数関数的に落ちてしまっていたのが、5.1では高速かつ安定するようになりました。以下にmysqlslapのI

    InnoDBのAUTO_INCREMENTが遅い問題は5.1でどう改善されたのか
  • せじまくんの刺さらない話(MySQL Slave増設編) | GREE Engineering

    はじめまして。プラットフォーム開発部のせじまです。好きなものはDisk I/Oです。 今回はMySQL(on Linux)のレプリケーションにまつわる、ちょっとしたお話をさせていただきたいと思います。 はじめに MySQL4.0以降のレプリケーションは、 Masterのmysqldが、INSERT/UPDATE/DELETEなどの更新情報を、バイナリログに記録する。 Slaveのmysqld(IOスレッド)は、masterのmysqldに接続し、バイナリログを転送する。 Slaveのmysqld(IOスレッド)は、受信したバイナリログ内容を、リレーログに記録する。 Slaveのmysqld(SQLスレッド)は、リレーログを読み込み、更新内容をslaveのDBに反映する。 といった仕組みになっています。図にすると次の通りです(*1)。 MySQLのレプリケーションはとても良くできた仕組みな

    せじまくんの刺さらない話(MySQL Slave増設編) | GREE Engineering
  • MySQLのパーティショニングのハマリ所 - sakaikの日々雑感~(T)編

    今までマニュアルを斜め読みした程度で「MySQL 5.1 から使えるようになったパーティショニング。便利そうだな」などと思っていたのですが、このたび実際に使いたいシーンが出てきたので、利用を前提に調べてみました。 そしたら、ハマることハマること。やりたいことは、日付カラムで1日ごとのパーティションにしたいだけだったのですが(向こう2年分くらいパーティション作っておいて、運用で「古いパーティション削除→新しいのを追加」でいいかなと考えていました)、これができない。 ハマりの原因は「パーティショニングの条件は、プライマリーキーの一部でなければならない」という制約。 http://dev.mysql.com/doc/refman/5.1/ja/partitioning-limitations.html 今回使用を検討したテーブルはプライマリーキーが重要だったので、 CREATE TABLE pt

    MySQLのパーティショニングのハマリ所 - sakaikの日々雑感~(T)編
  • PHP開発者のMySQLの間違いトップ10:phpspot開発日誌

    WindowsアプリのツリービューっぽいUIをWEB上で簡単実装できるjQueryプラ... 次の記事 ≫:シンプルさがいい感じの154種類のアイコンセット Top 10 MySQL Mistakes Made by PHP Developers PHP開発者のMySQLの間違いトップ10。 手慣れている人にとっては知ってることも多いかもしれませんが、初心者が役立ったり、知らない部分のカバーとしてメモとして書いてみます MyISAMを使っている デフォルトはストレージエンジンにMyISAMだけどInnoDBを使おう リカバリ可能でオンラインバックアップ機能、外部キー利用可能なInnoDBおすすめ 詳細:Open database life: MyISAMとInnoDBのどちらを使うべきか PHPMySQL関数を使っている mysql_* 関数を使わず、PDO等でストレージ変更に対応しよう

  • MySQL 5.1.52リリース - SH2の日記

    出てます。今回は30件のバグ修正が行われており、そのうちセキュリティに関するものが3件、パーティショニングとレプリケーション双方に関するものが1件、パーティショニングに関するものが2件、レプリケーションに関するものが1件となっています。その他については、InnoDBに関するバグ修正が9件とやや目立ちます。 3件のセキュリティ修正について確認しておきます。運用中の商用システムに対して問題になるものはないと思います。 GeometryCollection型(MultiPoint、MultiCurve、MultiSerface)に対してGeometry型以外の値を割り当てると、サーバがクラッシュすることがありました。今後はサーバがデータ型をチェックし、不正なパラメータを検出した場合は「bad geometry type」として失敗するようになりました。(Bug#55531) あるPrepared

    MySQL 5.1.52リリース - SH2の日記