タグ

MySQLに関するhrfmsdのブックマーク (33)

  • 限界までMySQLを使い尽くす!!

    どこまで出来るか?!やれるところまでやってやるぜ!!と、威勢が良いのは若い間だけの話。オトナのオトコは、攻めるときはとことん攻めるが自らの限界もわきまえて賢く振る舞うのがスマートってものである。というわけで、今日はMySQLのいろいろな限界についてまとめてみる。皆さんも是非MySQLの限界を知り、MySQLをもっとスマートに使って頂きたい。 SQL文の最大長 MySQLサーバーが実行出来るSQL文の最大長は、max_allowed_packetシステム変数で表される。max_allowed_packetの最大値は1GBである。max_allowed_packetの値はセッションごとにも設定可能なので、デフォルトではそこそこの値(16MBなど)に設定しておいて、必要に応じて大きな対を使うと良いだろう。 データベースの個数 データベースオブジェクトの個数に制限はない。データベースオブジェクトは

    限界までMySQLを使い尽くす!!
  • InnoDBで行ロック/テーブルロックになる条件を調べた #mysqlcasual Advent Calendar 2013 - あおうさ@日記

    はじめに この記事は、MySQL Casual Advent Calendar 2013 7日目の記事です。 〜 Casual に記事を書けばええんやでヽ(´ー`)ノ 〜 私がMySQLで えっ?! っと思った下記エントリーの挙動が何故そうなってしまうのかを書きたいと思います。 InnoDBで行ロック/テーブルロックになる条件 MyISAM はテーブルロック、InnoDB は行ロックが掛かるというのは有名な話じゃないかと。 ただ、最近知ったのですが、InnoDB だとしても必ずしも行ロックになるわけではなく、テーブルロックになる場合もあるようですね。 ... InnoDB であってもユニーク制約 or インデックスが張られているカラムで検索した場合以外はテーブルロックになってしまうようです。これは注意しないと思わぬところでテーブルロックになってしまって大変なことになりそう! http://

    InnoDBで行ロック/テーブルロックになる条件を調べた #mysqlcasual Advent Calendar 2013 - あおうさ@日記
  • れぶろぐ - [PHP][MySQL] IP アドレスを数値に変換してデータベースへ保存する場合の注意点

    ■ IP アドレスを数値に変換してデータベースへ保存する場合の注意点 PHPMySQL には、IP アドレスをドット表記の文字列と数値との間で相互に変換する関数がある。 ところが実は、PHP の ip2long() 関数は signed int な値を返すのに対し、 MySQL の INET_ATON(), INET_NTOA() 関数は unsigned int な値を前提にしている。 PHP 5.2.5 と MySQL 4.1 (4.1.11a-4sarge2) で試してみると、それぞれ次のような結果になった。 php > echo ip2long('192.168.0.1'); -1062731775 php > echo long2ip(-1062731775); 192.168.0.1 php > echo long2ip(3232235521); 192.168.0.1

  • 長年の議論に終止符 -- MySQLとMariaDBの違い一覧 - 技術メモ置き場

    (2014.12.3追記:このblogの内容は、以下の書籍にも反映させた。) SQLレベルの差異 MariaDB5.5とMySQL5.5ではSQLレベルでの違いはほとんどなかった。autoincrementの最大値の扱いくらい。 ただし、MariaDB10.0でREGEXPがマルチバイト対応になったので、アプリ側は注意。 項目 MySQL MariaDB Autoincrement 最大値に達すると、以降は最大値を繰り返す。Warningのみ。エラーにならない。tinyintなら…,125,126,127,127,127… 最大値-1まで。以降はエラーを返す。tinyintなら…,125,126,ERROR,ERROR,… EXPLAIN文 JSON形式 バージョン5.6から 未対応 Optimizer Trace バージョン5.6から 未対応(ただし、MariaDBのほうがオプティマイザ

    長年の議論に終止符 -- MySQLとMariaDBの違い一覧 - 技術メモ置き場
  • MySQL 今更ながらonline-schema-changeについて | Ore no homepage

    そういえば先日はハロウィンだったね。んで、今日スタバに行ってみたら早くもクリスマス仕様。残念ながら年末の予定は無え。 そんなこんなでオンラインスキーマチェンジを番のオペレーションで使い始めたのでそのメモ。 0. online-schema-change オンラインスキーマチェンジは、percona社が出しているpercona-toolkitに梱包されている。その他有用なツールも入っているのでお世話になっている人も多いだろう。で、オンラインスキーマチェンジはその名のとおり、スキーマの変更、alter文をブロックなしで実行してくれるという代物。 私事なんだけど、今までは「ちょっと更新をブロックしちゃうけどアクセスの少ない時間帯にオンラインでalterを流す」みたいな運用をしてた。実行内容にもよるけどalter tableは意外と早いので、「更新をブロックされる時間がSLA的に許可できるならO

  • PHPでデータベースに接続するときのまとめ - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。PDO に関しては大きく変わっていない部分が多いとは思いますが, PHP 8.x 以降での動作保証はありません。 あらかじめ読んでおきたい記事 Qiita - 【PHP超入門】クラス~例外処理~PDOの基礎 by @7968 初心者がやりがちなミス 以下のどれかに1つでも当てはまるコードは見直す必要があります.付録にリンクを貼っておきましたので,「該当するかも?」という人はクリックして飛んで読んでください.太字にしてあるものは脆弱性に直結する危険度の高いものです. mysql_query などの非推奨関数を利用している SET NAMES あるいは SET CHARACTER SET などで文字コードを指定している そもそもデータベース

    PHPでデータベースに接続するときのまとめ - Qiita
  • MySQLとPHPで曜日の数値表現が非常に紛らわしい件 - tarhashiの日記

    MySQLPHPで曜日の数値表現を使った処理を行ったら非常に紛らわしかったのでメモ。 MySQLの曜日関数 MySQLには日付から曜日の数値表現を求める関数が2つある。 DAYOFWEEK関数と、WEEKDAY関数である。 この2つの関数が単にエイリアスであればいいのだが、 それぞれ違う結果を返す。 DAYOFWEEK関数 まずは、DAYOFWEEK関数の結果を見てみる。 SELECT DAYOFWEEK('2012-12-02') , DAYOFWEEK('2012-12-03') , DAYOFWEEK('2012-12-04') , DAYOFWEEK('2012-12-05') , DAYOFWEEK('2012-12-06') , DAYOFWEEK('2012-12-07') , DAYOFWEEK('2012-12-08') \G 上記のSQL実行すると、結果は以下のように

    MySQLとPHPで曜日の数値表現が非常に紛らわしい件 - tarhashiの日記
  • kuroigamen.com

    This domain may be for sale!

  • chef で mysql のユーザやデータベースを管理する - Hack like a rolling stone

    以前、ある環境のデータベースを作ったときは、忙しくて手が回らないという理由で ユーザやデータベースのセットアップは script リソースを作ってえいやと済ませてしまった tk0miya です。こんにちは。 今回はすべて community cookbook で環境を作る方法をまとめてみました。 やり方が分かってしまえばシンプルに実現できるので、泥臭く script リソースを作らずに済みそうです。 鍵は database cookbook ユーザやデータベースを作るレシピmysql cookbook に入っていないため、 公式には提供されていないものといままで諦めていたのですが、 調べてみると mysqll cookbook ではなく database cookbook でリソースが提供されているようです。 以下、README の説明です。 The main highlight of

    chef で mysql のユーザやデータベースを管理する - Hack like a rolling stone
  • AWS RDS MySQLでクエリログを出力する方法 | Basicinc Enjoy Hacking!

    ここ最近、AmazonWebServiceばかり使ってる桜庭@zaruです。フレームワークやORMを使ってデータベースを利用することが殆どで、生のSQLを書くことなんて少なくなってきた昨今ですが、開発中にはどんなクエリが生成されているのか気になったりするよね。パフォーマンスとか。パフォーマンスとか。 というわけで、RDSのMySQLでもクエリログを出力できるようにする方法を紹介。 Amazon Management Consoleからの操作 まずは手軽に変更する方法。 Amazon Management ConsoleのRDSページから、DB Parameter Groups というメニューを選択。 なんらかのRDSインスタンスを立ちあげていれば、default.mysql5みたいなグループが作られているので、そちらを選択。下のフレームに、パラメータのリストが表示されます。 general

    AWS RDS MySQLでクエリログを出力する方法 | Basicinc Enjoy Hacking!
  • MySQLで実行中のクエリ一覧を見て、SQLを強制終了する方法 | Basicinc Enjoy Hacking!

    時々、アプリケーションが暴走して変なクエリが発行されたり、いつまでたってもクエリが終わらない時とかありますよね。そんな時には、MySQLで実行中のSQLを見て、問題ありそうなものを強制終了させちゃいます。 MySQLにログイン $ mysql -u hoge -phoge db まずはMySQLにログイン。その後、 > show processlist; と打つと現在実行しているSQLの一覧が表示されます。項目の中にTimeというのがありますが、これが実行から何秒経過しているかを表しています。 ちなみに > show full processlist \G; と full を付け加えるとSQLの全文が表示される + \G を末尾に付け加えるとクエリ毎に分割されて見やすくなります。 明らかに時間がかかって負荷の原因になっているものがあれば Id という項目で表示されている数値を使って強制終了

    MySQLで実行中のクエリ一覧を見て、SQLを強制終了する方法 | Basicinc Enjoy Hacking!
  • monによるMySQLのデッドロック検知とロギング - FAT47の底辺インフラ議事録

    更新が激しいDBMySQL)でInnoDBのロック競合が発生し、アプリケーションサーバが詰まる状況が発生してしまいました。 障害監視はmonというアプリケーションで行なっているのですが、 今回はこのmonを使ってMySQLデッドロックの検知とロギングを行いたいと思います。 monについては下記の資料をご参照ください。 Mon, Muninによる楽々監視生活 デッドロック解析は下記サイトのSQLを利用しています。 MySQL InnoDBにおけるロック競合の解析手順 前提 ・MONのサーバは既に構築済みであること ・DBサーバはMySQL5.5であること(MySQL5.1+InnoDB pluginでも可) 〜〜〜 以下、監視対象のDBサーバにて作業 〜〜〜 SNMPインストール yum install net-snmplockを検知するスクリプト作成 vim /usr/local/sbi

    monによるMySQLのデッドロック検知とロギング - FAT47の底辺インフラ議事録
  • FuelPHPでMySQLドキュメントを生成するパッケージを作ってみました。

    2013/01/10 追記 高機能版作りました。 FuelPHPMySQL/PostgreSQL/SQLiteのドキュメントジェネレータを作ってみました。 http://madroom-project.blogspot.jp/2013/02/fuelphpmysqlpostgresqlsqlite.html -- ソースは、以下になります。 https://github.com/mp-php/fuel-packages-mydoc Linuxサーバ上でMySQLドキュメントを作りたく、ジェネレータを探したんですが見つからず、FuelPHPのパッケージとして作ってみました。(実はまだLinuxサーバ上で実行していませんが。。。) Twitter Bootstrapを使っています。 とりあえず、以下を出力するようにしてみました。 * テーブル一覧とテーブル詳細 * インデックス一覧とインデッ

  • MySQLの冗長化 2013-01-24

    <SKILL BASECAMP 2013> MySQLの冗長化~無停止運用を実現するには~ http://www.pasonatech.co.jp/entry/index.jsp?mode=2&d=on&no=3756Read less

    MySQLの冗長化 2013-01-24
  • レプリケーションを使わないMySQLの冗長化

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、DBMSチームの三谷です。 ヤフーでは多くのサービスでMySQLを利用しています。MySQLはヤフーを支える重要な技術の1つです。 私のチームではヤフーのさまざまなサービスのデータベースを集約して管理・運用しています。 集約することでコストの削減やノウハウの蓄積といった効果を生み出しています。 今回はこの集約環境の冗長化方法についてご紹介します。 集約環境の構成 集約環境ではマスターの冗長化にレプリケーションを利用せず、エンタープライズ向けの共有ストレージを利用したアクティブ・パッシブ型のHA構成を採用しています。 データファイルを共有ストレージに置き、どのマスターサーバーからでも同じデータに対してアクセスできるように

    レプリケーションを使わないMySQLの冗長化
  • MySQL 5.6新機能解説@dbtechshowcase2012

    1. MySQL 5.6 新機能解説 @ db tech showcase 2012 奥野 幹也 @nippondanji mikiya (dot) okuno (at) gmail (dot) com 2. 免責事項 ● プレゼンテーションにおいて示されている見解は、私自身 の見解であって、オラクル・コーポレーションの見解を必ず しも反映したものではありません。ご了承ください。 3. 自己紹介 ● MySQL サポートエンジニア – 2000 年にサン・マイクロシステムズ入社 ● 主にハードウェアのサポートを担当 – 2007 年に MySQL KK へ転職 ● 気付くとまたサン・マイクロシステムズに・・・ – 現在は日オラクルに在席。 – サポート一筋 12 年 ● 日々のしごと – MySQL トラブルシューティング全般 – Q&A 回答 など ● ブログ – 漢のコンピュータ道

    MySQL 5.6新機能解説@dbtechshowcase2012
  • C言語より高速なJavaScriptによるバイナリ操作が話題

    JavaScriptなどのスクリプト言語は動作が遅く、最適なパフォーマンスを得るにはC/C++で実装しなければならないという常識に挑んだ先進的な講演が話題になっています。この話題の発端は2012年10月7日から10月8日までベルリンで開催されたJSConf.euでFelix Geisendörfer氏が行った講演です。 彼の講演の題材はnode.jsからMySQLに接続する為のバインディングのパフォーマンスに着目しています。2010年当時、node.jsにはMySQLのバインディングが存在しておらず、増井さん作のnode-mysqlモジュールが開発中の状態でした。このモジュールはJavaScriptでバイナリを解析しておりJavaScriptのみで開発されていました。この状況を受けてFelix氏が新たにnode-mysqlモジュールを新規に開発を始めました。このモジュールもJavaScri

    C言語より高速なJavaScriptによるバイナリ操作が話題
  • MySQLの設定ファイル my.cnf をgithubにて公開しました & チューニングポイントの紹介 - blog.nomadscafe.jp

    YAPC::Asiaのスライドで予告していた通り、実際に弊社のいくつかのサービスで使っている my.cnf を公開しました。 github: https://github.com/kazeburo/mysetup/tree/master/mysql 今回、公開した理由はMySQl Beginners Talksの発表の中でも触れている通りです。MySQLのソースコード中に含まれるサンプルのmy.cnfが最近のサーバハードウェアや運用に合わなくなって来ているという状況で、自分の設定にイマイチ自信が持てていない人は少なくないはず。そこで各社秘伝のタレ的な my.cnf をOpen & Shareすることで、モダンなmy.cnfを作り上げる事ができるんじゃないかという考えの下、今回 github にて公開しました。 ファイルは4つあり、それぞれ MySQL 4.0、5.1、5.5、そしてテスト中

  • MySQL 5.6のInnoDB memcached pluginを使ってみる - 酒日記 はてな支店

    MySQL 5.6の RC 版が出ましたね。魅力的な機能が満載で皆さんwktkしていることと思います。早速、個人的に気になっていた memcached plugin を試してみました。 最初に結論から言いますが、現時点 (5.6.7rc) では HandlerSocket の代わりに使えるようなものではなさそうです。 memcached protocol でアクセスできるのは全体で 1 テーブルのみ 訂正: namespace という仕組みで複数テーブルにmapが可能です テーブルの文字コードは latin1 である必要がある 【2012-11-22 追記】5.6.8RCでは、文字コードが latin1 であるという制限は撤廃されました 「MySQL のテーブルに memcached protocol でアクセスできる」というよりは、「memcached のストレージを InnoDB にで

    MySQL 5.6のInnoDB memcached pluginを使ってみる - 酒日記 はてな支店
  • 開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!

    米国で行われているMySQL Connectというイベントで、ついにMySQL 5.6 RC(リリース候補版)が発表された。リリース候補版ということは、これが次の正式版になるということだ。MySQL 5.5は5.1から凄まじい進化を遂げたバージョンであった。だが、MySQL 5.6はさらにそれを上回る進化を遂げている!正直ここまでの進化を誰が予想しただろうか、いや誰も出来なかったであろう。これまで、α版が出たときから何度か新機能について紹介してきたが、今回改めてMySQL 5.6の新機能を振り返ってみようと思う。すべてまとめるともの凄い内容だ。興奮して夜も眠れなくなること請け合いだ。MySQLの進化が止まるのでは?などという心配は吹き飛び、もはやもうちょっと小出しにしなくて良かったのか?と心配してしまうレベルである。 それではMySQL 5.6の新機能について紹介していこう。 InnoDB

    開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!