タグ

コツとMySQLに関するkoemuのブックマーク (21)

  • MySQLでINSERTのデッドロックに嵌る人を1人でも減らすために - ichirin2501's diary

    この記事ははてなデベロッパーアドベントカレンダー2015の12月24日の記事です。 昨日は id:stefafafan さんのエンジニア英語でした。 こんにちは、こんばんは。 クリスマス・イヴですね、皆さんはどのような一日を過ごされる(た)のでしょうか。 僕は一人です。 改めまして、先日初めての合コンを経験/失敗して二度と行かないと誓った はてなの id:ichirin2501 です。今回は小ネタとしてMySQL(InnoDB)のBULK INSERTにおけるデッドロックの話をしようと思います。ただ、外部キー制約が絡むと複雑になるので今回は触れません。それについてはこちらを参照ください。 あ、タイトルはオマージュです*1。 Topic 検証環境 INSERTのデッドロック 避けられないケース もしくはロックする リトライ処理に注意 初期データ Duplicateの場合 Deadlockの

    MySQLでINSERTのデッドロックに嵌る人を1人でも減らすために - ichirin2501's diary
  • Home

    All of Percona’s open-source software products, in one place, to download as much or as little as you need.

    Home
    koemu
    koemu 2015/07/10
    GROUP BY 〜 JOIN ってのがあったのか
  • kamipo traditional (というかSTRICT_ALL_TABLES) では防げないMyISAMという名の化け物

    kamipo traditional (というかSTRICT_ALL_TABLES) では防げないMyISAMという名の化け物 TL;DR kamipo traditionalですら完全に防ぎきれないアレがあるので、そこを気にするなら出来る限りさっさとMyISAMからInnoDBに引っ越しましょう。 これらの記事を読んだ人向けです。 ルーク!MySQLではkamipo TRADITIONALを使え! | おそらくはそれさえも平凡な日々 Javaでkamipo traditionalを有効にする - その手の平は尻もつかめるさ アプリでミスって不正なデータが入るくらいだった500になったほうがマシ。というのが個人的な考えです。 +激しく同意+ さて、激しく同意したところで、kamipo traditionalでは倒せないMyISAMという名の化け物の話をしたいと思います。 kamipo tr

    koemu
    koemu 2015/07/09
    理由があるとはいえ困ったMyISAM
  • pt-online-schema-changeを安全につかう - Around the World

    この記事はMySQL Casual Advent Calendar 2014とCyberAgent エンジニア Advent Calendar 2014の19日目の記事です。 この間のMySQL Casual Talks vol.7でも少し触れていますが、pt-online-schema-change(以下、pt-osc)には安全に実行するための便利なオプションが用意されています。これらのオプションを利用すれば、オンラインでの変更に抵抗がある方でも石橋を叩きながら実行することができます。5.6でOnline DDLが使えますが、セーフティに変更したい場合は有効です。 pt-online-schema-change — Percona Toolkit Documentation スレッド数を監視する --max-load pt-oscはスレッド数をチェックしながら動作を制御できます。--ma

    pt-online-schema-changeを安全につかう - Around the World
  • MySQL 5.6.10 以下に存在する レプリケーションのバグと詳細について

    こんにちは。初めて会社のブログを書きます。吉川です。 先日、月に一度行われている社内勉強会(hbstyle)にて、下記の発表をしました。 MySQL 5.6.10 以下に存在する レプリケーションのバグと原因特定について (Heartbeats 社内勉強会 2014/12/11) この件に関して、社内・外から反響がありましたので、詳細についてご紹介します。 概要 以下の環境にて、MySQL のレプリケーションが正常に同期されない事象に遭遇しました。 使用している MySQL のバージョンは 5.5.32 バイナリログのフォーマットには ROW を使用 現象としては以下の通りです。 MasterDB で特定のテーブルに書き込んだ更新系 DML が SlaveDB に反映されない SlaveDB にて show slave status\G を実行した結果 Slave_(IO|SQL)_Run

    koemu
    koemu 2014/12/16
    RDSやMariaDBの人も確認してみて下さい
  • MySQLバージョンアップのベストプラクティス | Yakst

    MySQL Performance Blogの翻訳。Perconaのサポートエンジニアによる、MySQLバージョンアップの様々なパターンと、その利点・欠点、手順の解説。バージョンアップ実施前の、事前調査とテストが重要であるとの指摘も。 MySQLのバージョンアップ(訳注 : 原文ではupgrade、以下同じ)はどこかで必要になるタスクだし、我々Percona SupportでもMySQLバージョンアップのベストプラクティスについての色々な質問を受け付けている。この記事では、色々なシナリオにおけるMySQLバージョンアップの推奨できる方法に焦点を当ててみたい。 MySQLのバージョンアップはなぜ必要になってしまうのか?その理由は色々だが、新機能が必要、パフォーマンスの改善、バグ修正などがあるだろう。しかし、アプリケーションと組み合わせた上で事前に広範囲なテストをしておかないと、リスクの大きい

    MySQLバージョンアップのベストプラクティス | Yakst
  • 誰も教えてくれなかったMySQLの障害解析方法 - Qiita

    それほどDBに詳しくないアプリエンジニアが何かトラブった時にすぐさま行動して問題把握できるようになる情報を列挙しておきます。 開発時、障害時の対処療法やちょっとした定期監視方法などを対象にしています。 抜的な対策などはインフラエンジニアさんにお任せしたほうがいいと思います。 DBはいろんな意味でこわいんでできれば触りたくないです>< 事前確認 MySQLサーバーのシステム設定値を確認しておく 以下のようにサーバーのシステム設定値を確認できます。 mysql> SHOW GLOBAL VARIABLES; # ワイルドカード(%)を用いた絞り込み mysql> SHOW GLOBAL VARIABLES LIKE 'performance_schema%'

    誰も教えてくれなかったMySQLの障害解析方法 - Qiita
  • Terry : Backup Confluence Database

    Backup Confluence wiki database (MySQL)mysqldumpIn addition to the automatic daily backup and manual backup in Administration we can use mysqldump to backup the database. SSH to the remote host and execute: Recommended way mysqldump to stdout, pipe to xz for compression and then pipe to pv redirect to xz file, pv is OPIONTAL, it is for showing the progress ONLY. The - after xz -z is OPTIONAL, by d

    koemu
    koemu 2014/03/28
    帯域制限とか。pvコマンド。
  • YappoLogs: なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか

    なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか ここ最近の大規模サービス関連したデータページング考です。 mysql 5.5.34 で試して記事書いてます。 bigdata テーブルは id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) なカラムがある前提です。もちろん InnoDB です。 2014年なんだからCOUNT(*)とかSQL_CALC_FOUND_ROWSとかLIMIT OFFSETのページングはやめようぜ - Togetterまとめが発端にみえるけど、わりと昔から話されてる事なんだけど、「nippondanji SQL_CALC_FOUND_ROWS」でググっても有用な情報ないし文書化されてないからしとく。 ページング処理で使われがちな機能です。 S

    koemu
    koemu 2014/03/12
    「誰かが良くわからないでコピペで新機能を作ってしまう」
  • MySQL5.6が勝手にsql_modeを書き換えてくれる話

    2024 ( 7 ) 1月 ( 7 ) 2023 ( 20 ) 12月 ( 3 ) 11月 ( 3 ) 10月 ( 1 ) 8月 ( 1 ) 5月 ( 2 ) 4月 ( 2 ) 3月 ( 3 ) 2月 ( 5 ) 2022 ( 27 ) 12月 ( 5 ) 10月 ( 1 ) 9月 ( 1 ) 8月 ( 5 ) 7月 ( 4 ) 6月 ( 3 ) 4月 ( 1 ) 3月 ( 3 ) 2月 ( 2 ) 1月 ( 2 ) 2021 ( 22 ) 12月 ( 4 ) 10月 ( 2 ) 9月 ( 6 ) 7月 ( 1 ) 6月 ( 3 ) 5月 ( 3 ) 4月 ( 1 ) 3月 ( 2 ) 2020 ( 42 ) 12月 ( 3 ) 10月 ( 2 ) 9月 ( 4 ) 8月 ( 3 ) 7月 ( 4 ) 6月 ( 6 ) 5月 ( 2 ) 4月 ( 3 ) 3月 ( 8 ) 2月 ( 6 )

    koemu
    koemu 2013/12/16
    basedir/my.cnf の存在に注意。設定が上書きされる。
  • MySQL5.6で今までのVerでは問題無かったSQL文がエラーになった場合の対処法 - oranie's blog

    追記:記事の文中で5.6のsql_modeデフォルト値について若干実際の挙動と異なる表記をしていました。rpmでinstallすると/usr/my.cnfというのがひょっこりいて、この中に [mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES という記述があり、これを/etc/my.cnfと合わせて設定している様です。で、デフォルト値については5.6.6以降はデフォルト値が「The default SQL mode in MySQL 5.6.6 and later is NO_ENGINE_SUBSTITUTION;」でそれ以前のデフォルト値は「MySQL 5.6.5 and earlier, it was empty (no modes set)」となっているようですね。 詳しくは http://yoku0825.blo

  • 気軽なMySQLバージョンアップ - まめ畑

    このエントリーはMySQL Casual Advent Calendar 2013 10日目の記事です。カジュアル! このへんでそろっとカジュアル詐欺と言われるのを防止するために、カジュアルな話を書いてみました。 MySQL5.6も正式リリースされてもうすぐ1年経ち、5.7の足音も聞こえてきている今日このごろですが皆様のMySQLのご機嫌はいかがでしょうか。 新機能や性能向上/bugfixに対応するためにMySQLのバージョンアップを行う機会や性能や不具合調査を行うことも多いかと思います。データベースのバージョンアップは特にメジャーバージョンアップの場合、パラメータのデフォルト値などの変更や仕様変更の影響(オプティマイザの変更)をアプリケーションが受けないか、性能の変化などを検証すると思います。 検証 実際に検証を行う場合、番環境で流れているクエリをバージョンアップ先のDBに実際に流して

    気軽なMySQLバージョンアップ - まめ畑
    koemu
    koemu 2013/12/10
    Kageを使って、MySQLのバージョンの差異をより手軽に検証する事ができる。
  • Use MySQL official deb package in Ubuntu

    I found there were deb packages for mysql server on dev.mysql.com. You don’t need to build mysql yourself! Then I tried to use it. $ sudo dpkg -i mysql-5.6.8-rc-debian6.0-x86_64.deb But this package install files into /opt/mysql/server-5.6/, even client side files. So you shuld setup some environment. InstallYou need libaio-dev package. $ sudo apt-get install libaio-dev Make user/group of mysql. $

    Use MySQL official deb package in Ubuntu
  • MySQLにおけるレプリケーション遅延の傾向と対策

    レプリケーションはMySQLで最もよく使われる機能のひとつだ。レプリケーションは基的に非同期でデータの複製を行う仕組みになっているのだが、非同期故にどうしても逃れられない問題がある。そのひとつが今回のテーマ、遅延である。というと、MySQLのレプリケーションはすぐに遅延が生じてしまうように感じてしまうかも知れないが、そのようなことはない。ほとんどの場合は即座にスレーブの更新が行われる。 なぜ遅延は発生するのか、どのように遅延が起きていることを調べるのか、どのように回避するのかということをエントリでは解説したい。うまく遅延と付き合って、MySQLのレプリケーションをより快適に運用してもらえればと思う。 そもそも遅延とは何かMySQLのレプリケーションは非同期で行われる。これは準同期でも同じであり、スレーブにおいて更新が起きるのはマスターよりも一瞬遅れてしまう。これは非同期であるが故に逃れ

    MySQLにおけるレプリケーション遅延の傾向と対策
  • MySQLでサービス停止のないALTER TABLEの検討 - SH2の日記

    MySQLでテーブルへのカラム追加、インデックス追加やテーブルの再編成などを行うと、その間テーブルに共有ロックがかかってしまいます。そのためこれらのメンテナンス処理は、通常利用者の少ない深夜早朝帯にサービスを止めて実施する必要があります。日はそれを無停止、オンラインのままでできないかという話題です。 基的なアイデア メンテナンス対象の元テーブルをコピーして、作業用の仮テーブルを作ります 仮テーブルに対して、カラム追加などの変更を加えます その間、元テーブルに対して行われる更新処理について差分を記録しておきます 仮テーブルの変更が終わったら、記録しておいた差分データを仮テーブルに反映します 差分データの反映が終わったら、元テーブルと仮テーブルを入れ替えます これと似たようなことを考えた方は結構いらっしゃるのではないでしょうか。ただ、言うは易し、行うは難しです。整合性がきちんと取れるかどう

    MySQLでサービス停止のないALTER TABLEの検討 - SH2の日記
  • MySQL のNULL ではまったことあれこれ - LukeSilvia’s diary

    MySQL に限らず、SQL のNULL の仕様には何回か「えっ」と驚くことがあったのでメモしておこうと思います。5.1 版の日語マニュアルがなかったものについては、4.1 のマニュアルを参照しました。 そもそもNULL は何を意味するか NULL は未定義または、不明を意味する。「電話番号を持たない」ということを表現する場合は、NULL ではなく、空の文字列を使う。 NULL 値というものを SQL 初心者はよく混乱します。SQL 初心者は、多くの場合、NULL が空文字 "" と同じであると考えてしまいます。これは違います。たとえば、以下のステートメントは完全に別のものです。 mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES (""); どちらのス

    MySQL のNULL ではまったことあれこれ - LukeSilvia’s diary
    koemu
    koemu 2010/03/23
    NULLの理解を深めて正しく使う
  • mixiの年末年始対策 日記投稿システムの改善 - mixi engineer blog

    朝晩冷えてきましたね。風邪など引いていませんでしょうか。さて、年末が近づいてくるこの時期に弊社のエンジニアが最も気になるのは、お正月。それも来年1月1日を迎えた瞬間です。 1日1日0時に何があるのでしょう?そう、mixiのサービスで最も日記が書き込まれるタイミングになるのです。個人的に「あけおめことよろアタック」と呼んでいます。今年は日記だけではなく、エコーでもメッセージが飛び交うことでしょう。この時期は携帯電話のキャリアでもさまざまな対策を行っていますが、ミクシィでも年末年始でもユーザの方に快適にサービス提供ができるように努めています 以下は昨年の年末年始の日記投稿数の推移です。青色が12/31から1/1、赤色が1/1から1/2になります 1/1の方が全体的に多いですが、特に年が変わる前後の投稿数は倍近くなっていることがわかります。この時に負荷により日記の投稿がしづらい状態になっていたの

    mixiの年末年始対策 日記投稿システムの改善 - mixi engineer blog
    koemu
    koemu 2008/12/12
    >mybenchを利用したテストでは、接続数が250を超えるとエラーが発生しテストが正常に終了しません。
  • 京都観光を終えて - mala

    Shibuya.pm Technical Talk #10 (2008-11-27) mala 最初: sm5377260 (lestrrat) マイリスト: mylist/9691133http://shibuya.pm.org/blosxom/techtalks/2008011.html

    京都観光を終えて - mala
  • MySQLのキャラクターセット - Ogawa::Memoranda

    Posted by: Hirotaka Ogawa @ July 04, 2006 05:53 PM | ドキュメントを読まない私が、いまさらMySQLのキャラクターセットで結構面倒な作業をさせられたのでその記録。 もともとMySQL 4.0.xを使っていた。 「skip-character-set-client-handshake」オプションが導入された4.1.15が出たタイミングで、4.1.15に移行した。 このとき、「--with-charset=latin1」でコンパイルされ、かつmy.cnfなどでdefault-character-setを特に指定していないMySQL 4.1.15で、4.0からアップグレードした。したがって各データベースのテーブルには、「DEFAULT CHARSET=latin1」が付与された。 「skip-character-set-client-hands

  • MySQL ClusterではBITカラム利用に注意 - メモ帳

    koemu
    koemu 2008/08/11
    ドボン!