タグ

innodbに関するkarahiyoのブックマーク (35)

  • MAMP, MySQLの起動エラーに対処

    MAMPのMySQLが突然起動しなくなった。 mysql_error_log.err を見るとInnoDBが起動できないのが原因の様子。 [ERROR] Plugin 'InnoDB' init function returned error. [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. [ERROR] Unknown/unsupported storage engine: InnoDB [ERROR] Aborting

    MAMP, MySQLの起動エラーに対処
  • MySQLやSSDとかの話 前編

    MySQLSSDとかの話です 後編はこちら http://www.slideshare.net/takanorisejima/mysqlssd-56045479 後日談はこちら http://www.slideshare.net/takanorisejima/mysqlssd-70162609Read less

    MySQLやSSDとかの話 前編
  • MySQL 5.6のインストール後にチューニングすべき項目 | Yakst

    MySQLコミュニティマネージャのMorgan Tocker氏による、MySQL 5.6をインストールした後にデフォルト値から変更した方がよいパラメータの解説。 数々のデフォルト値の改善によって、過去のバージョンと比べてMySQL 5.6では設定しなくてはならない値がかなり減った。とは言え、変更すべきものについてここで書いておきたい。 InnoDBの設定 innodb_buffer_pool_size - デフォルトは128M。これは、メモリにロードされるデータとインデックスのためにInnoDBがどのくらいメモリを使うかを指定するものなので、設定すべき重要な値だ。MySQLの専用サーバなら、搭載されているメモリの50%から80%が推奨される設定値だ。例えば、64GBのRAMを搭載しているサーバなら、バッファプールは50GB程度にすべきだろう。 innodb_log_file_size -

    MySQL 5.6のインストール後にチューニングすべき項目 | Yakst
  • InnoDBのREPEATABLE READにおけるLocking Readについての注意点

    日は、MySQL Casual Advent Calendar 2013の20日目である。というわけでカジュアルに小ネタを紹介しよう。 MVCC - Multi Version Concurrency Controlご存知の通り、InnoDBはMVCCを実装している。そのため、分離レベルがREPEATABLE READの場合には、行にロックをかけることなく、一貫した読み取りが可能になっている。 もし、あるトランザクションT1開始後に、別のトランザクションT2によって同じ行が書き換えられてしまった場合には、T1はロールバックセグメントにある古いバージョンの値を読み取ることができるので、T1内で実行したSELECTは常にT1開始時点のデータを参照することができるのである。大事なのでもう一度言うが、REPEATABLE READにおける単純なSELECTでは行ロックは必要ない。 Lost Up

    InnoDBのREPEATABLE READにおけるLocking Readについての注意点
  • Using MySQL/InnoDB/行レベルロック: デッドロックを回避するために、実用上最低限必須の知識 - Qiita

    デフォルトの isolation level (トランザクション分離レベル) はREAD COMMITTEDに変更するべき 内部が不透明な既存アプリケーションを変更する場合等、クリティカルな場合を除いて、InnoDBを利用する場合はデフォルトのisolation levelをREAD COMMITTEDに変更するべきである。 根拠は MySQL (InnoDB) でデッドロック検知される条件について - QA@IT ここに解説がある。 Railsでは、 以下のページに書いてあるようなモンキーパッチでデフォルト設定の変更が可能である。 Rails 4では、トランザクションにオプションを渡すことでも変更が可能である。或いは、my.cnfで設定することも可能である。しかし、これはDBレベルの話ではなくアプリケーションレイヤーの話なので、アプリケーション側で修正するのが望ましいと僕は思う。 参照:

    Using MySQL/InnoDB/行レベルロック: デッドロックを回避するために、実用上最低限必須の知識 - Qiita
  • QA@IT サービス終了のお知らせ - @IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    QA@IT サービス終了のお知らせ - @IT
  • 【MySQL】総メモリー使用量を算出するSQL作ってみた - もぐめぽろぐ

    必要メモリ量=グローバルバッファのサイズ+(各スレッドのバッファサイズの合計 × 最大接続数(max_connections)) 各スレッドのバッファサイズの合計とは、以下の値の合計値です。 sort_buffer_size myisam_sort_buffer_size read_buffer_size join_buffer_size read_rnd_buffer_size グローバルバッファのサイズは、以下の値の合計値です。 key_buffer_size innodb_buffer_pool_size innodb_log_buffer_size innodb_additional_mem_pool_size net_buffer_length ※実践ハイパフォーマンスMySQL による とあるのだが、一般的にいわれてる計算式はさらにそれに+query_cache_sizeがプラ

    【MySQL】総メモリー使用量を算出するSQL作ってみた - もぐめぽろぐ
  • 運用視点なMyISAMとInnoDBと。 – LexTech

    MySQL5.5からトランザクション処理ができるInnoDBがデフォルトストレージとなりましたし、とりあえずInnoDBにしとこうという風潮から、ストレージがInnoDBであることも多いのですが、実は蓋を開けて見るとまだまだMyISAMで動いているサービスがたくさんあります。今回は運用面から見た両者の違いをみてみたいと思います。 同じMySQLですが、InnoDBの運用とMyISAMの運用は注意するポイントが違います。 ロック方式 一番大きい違いはロック方式の違いでしょうか。InnoDBは行ロック方式(*1)、MyISAMはテーブルロック方式です。データをINSERTやUPDATEする時はセマフォ制御のためロックされますが、その時の挙動が違います。 たとえばUPDATEのクエリを投げると、MyISAMの場合は対象テーブル全体がロックされ、その後のクエリが”詰まり”ます。なので重いクエリを発

  • MySQLのINSERT/UPDATE時におこる不整合対策 - LukeSilvia’s diary

    先日、作っているアプリケーションにバグが発生しました。バグの内容は次のようなものでした。 同時に存在してはいけないはずのデータが、DB に存在する 整合性のチェックはアプリケーションレベルで行っている 一意制約のような単純なものではないので、アプリケーションレベルで実装 整合性のチェックロジックは正しい これに対し、バグは次のような状況で発生したと仮説を立てました。 ユーザがレコードを一括登録しようとする 登録ボタンを押したがレスポンスが遅い この間、整合性チェックが走っている ユーザはもう一度登録ボタンを押した 2回目の登録の整合性チェックが走り始める 1回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックが完了、INSERTが始まる 2回目の登録の整合性チェックの間、DBにはまだ1回目の登録によるINSERTが実行されていないので、チェックを通過した 結

    MySQLのINSERT/UPDATE時におこる不整合対策 - LukeSilvia’s diary
  • MySQL InnoDBストレージエンジンのチューニング(後編)

    チューニングの基礎 それでは、具体的にInnoDBでどこをチューニングするべきかを見ていこう。 バッファプール 最も基となるのがバッファサイズの調整だ。ワーキングセットが全てバッファに収まらない限り、バッファプールは大きければ大きいほど良い。その分ディスクアクセスが減るからだ。バッファサイズが小さいと、キャッシュミス時にディスクからReadするのに時間がかかり、I/Oがボトルネックになってしまう。予算のある限りメモリを目いっぱい搭載し、バッファプールに割り当てよう。InnoDBのバッファプールは、innodb_buffer_pool_sizeオプションで設定する。利用可能なメモリは、他の処理に必要な分を除いたすべてをInnoDBのバッファプールに割り当てよう。 innodb_buffer_pool=32G ここで一つ注意がある。innodb_buffer_pool_sizeはバッファプー

    MySQL InnoDBストレージエンジンのチューニング(後編)
  • MySQL 5.5の秘伝のタレが5.6では腐っていたはなし | GMOメディア エンジニアブログ

    もう寒の入りを過ぎましたね。DBAのたなかです。 GAからもうすぐ1年、社内ではもう相当カジュアルにMySQL 5.6をインストールしています。今までは新規サービス(や、新規機能)での導入がほとんどだった5.6を、このたびトラフィックガンガンのサービスにアップグレードで導入しました(と、偉そうに言っていますが私でない別のDBA氏が主担当のサービスです) 主な理由はInnoDB Compressedを使っていたのでその性能アップに期待…というところだったんですが、弊社DBAが神代の時代より試行錯誤を重ねたどり着いた究極のmy.cnf(?)、いわゆる秘伝のタレが 残 念 な が ら 腐 っ て お り 夜を徹してアップグレード作業をしていた担当DBA氏が青い顔(推定。チャットだった)で ス ロ ー ク エ リ ー が 1 0 倍 く ら い に な っ た ん だ け ど … と訴え、彼はその

  • InnoDBのプライマリキーとセカンダリキー | Yakst

    InnoDBのテーブルから、プライマリキーを取得するクエリを書いたのに、なぜかセカンダリインデックスが使われることがある。この仕組みを、InnoDBのインデックスの格納方法から解説する。 今日、EXPLAINの結果を色々と試してみている時に、興味深い問題にぶち当たったので、ドキュメントには載っていないこの現象をここで共有しておこう。 とても単純なInnoDBのテーブルを考えるところから始めよう。2つのINT型のカラムを持ち、最初のカラムがプライマリキーで、2番目のカラムに普通のインデックスが張ってある。 CREATE TABLE `t1` ( `id1` int(10) unsigned NOT NULL, `id2` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id1`), KEY `id2` (`id2`) ) ENGINE=InnoDB;

    InnoDBのプライマリキーとセカンダリキー | Yakst
  • MySQL(InnoDB)のインデックスについての備忘録 - What is it, naokirin?

    最近、インデックスについて調べることがあったので、忘れないうちに出来る限り情報を残しておこうと思います。 ちなみにMySQLのバージョンは5.5および5.6の情報を元にしています。 InnoDBにおけるインデックス インデックスの構造 B+Treeインデックス InnoDBではデータはテーブルスペースと呼ばれる領域にあります。さらにこのテーブルスペースはページ(ブロック)単位で管理されており、このページ単位でB+Treeが構成されるようになっています。つまりI/Oの単位はページ単位になっている、ということです。 クラスタインデックスとセカンダリインデックス InnoDBではテーブルの検索や操作に使われるインデックスとして2種類のインデックスが存在します。それはクラスタインデックス(Clustered index)とセカンダリインデックス(Secondary Index)です。 クラスタイン

    MySQL(InnoDB)のインデックスについての備忘録 - What is it, naokirin?
  • MySQL :: MySQL 5.5 Reference Manual

    This page has moved or been replaced. The new page is located here: http://dev.mysql.com/doc/refman/5.5/en/innodb-locking.html Please update any bookmarks that point to the old page.

  • MySQLのロックについて - SH2の日記

    JPOUG> SET EVENTS 20140907 | Japan Oracle User Group (JPOUG)に参加して発表をしてきました。IIJさまのセミナルームは窓からの眺めがすばらしいですね。JPOUGの運営メンバのみなさま、会場を提供してくださったIIJのみなさま、当日お越しいただいたみなさま、どうもありがとうございました。 私のセッションでは「MySQLのロックについて」と題してネクストキーロックなどの説明をしました。プレゼンテーション資料と、調査のために作成したツールを公開します。 プレゼンテーション資料 (PDF) Lock Inspector 1.0 プレゼンテーション資料からリンクしているウェブサイトの一覧です。 MySQL Lists: mysql: Re: InnoDB's inner workings + checkpoints 過去記事の訂正 @kami

    MySQLのロックについて - SH2の日記
  • MySQL - InnoDBのロック関連まとめ - Qiita

    メモ開放。InnoDBの行ロック関連について、それぞれの項目が必ずしも並列関係にあるわけではないが、以下のようにまとめていく。 排他ロックと共有ロック SELECT ~ FOR UPDATE SELECT ~ LOCK IN SHARE MODE 排他ロックと共有ロック 読み取りを許すかどうかの違い。排他ロックは対象行を全てのクエリからロックするため、UPDATEやDELETEなどの更新クエリはもちろん、SELECTなどの読み取りクエリも通さない。共有ロックは更新クエリを通さないが、読み取りクエリは通す。 (追記:排他ロックは分離レベルによってはSELECTを通すとのこと。 公式 ) 排他ロックは全てのクエリを通さず、共有ロックは排他ロックを伴うクエリを通さない、と言い換えたほうがいいかもしれない。 公式では共有ロックは同トランザクション内のselectを許し、排他ロックは同トランザクショ

    MySQL - InnoDBのロック関連まとめ - Qiita
  • 無料サービスを使え! – 役立つ無料サービスのレビュー、まとめ、比較記事を紹介

    コンテンツへスキップ 無料で使える!HubSpotの顧客リストの活用法 無料のアンケート作成ツール 比較/まとめ 無料「Excel」 テンプレート 比較/まとめ 無料で使えるノートアプリ比較 (Evernote / OneNote / Google Keep) おすすめの無料Web会議システム5選 WebP Converter 徹底解説!初心者でも直ぐに使える HubSpot は、マーケティング、セールス、サービスのためのCRM(Continue reading 多くの人の声を聞くことで改善できることも多い 企業や団体など運営していContinue reading 就職・転職には必須となる履歴書・職務経歴書 これから就職活動をスタートContinue reading 便利なノートアプリで効率的な仕事をしよう いつの時代も仕事をしていてメContinue reading 近年、リモートワーク

  • VOYAGE GROUP エンジニアブログ : MySQL InnoDBのinsertとlockの話

    2015年03月08日17:06 カテゴリ MySQL InnoDBのinsertとlockの話 こんにちは。ECナビでアプリケーションエンジニアをやっている駒崎です。 今回はMySQLのInnoDBエンジンにおけるINSERTとロックの挙動について書きたいと思います。 はじめに アプリケーションでレコードの重複チェックをしてからINSERTをする。テーブルにはUNIQUE制約をかけてデータ不整合が起きないようにしている。という仕様はよくあるケースだと思います。 こういったケースでINSERTしたときにどのような仕組みが働いて重複データを防いでいるのだろう?アプリケーションで重複チェックをしてはいるけどMySQLではどんな挙動をしているんだろう?というのが気になったので調べました。 調べること INSERTした場合のロックの挙動 FOR UPDATE文で排他ロックをかけた場合のロックの挙動

  • SELECTなのにテーブルにロックが掛かる!〜InnoDBトランザクションにおけるINSERT INTO SELECT FROMの罠〜 - XOOPS専門-株式会社RYUS

    SELECTなのにテーブルにロックが掛かる!〜InnoDBトランザクションにおけるINSERT INTO SELECT FROMの罠〜 カテゴリ :  技術全般 2010-10-14 19:37 MySQLのInnoDBはトランザクションが使えたり、行ロックが使えたりして、データの整合性の点でMyISAMに比べて優れています。 業務系アプリになると、データの整合性が重視されることも多く、トランザクションを使うことも増えます。 今回、そのトランザクションを使っていて、思いもよらないクエリがきっかけで、テーブルにロックが掛かってハマりました。 テーブル構造はこのような感じ...。 CREATE TABLE `working` ( `id` int(11) NOT NULL AUTO_INCREMENT, `col` int(11) NOT NULL DEFAULT '0', PRIMARY K

  • MySQL/MariaDBとTransactdのInnoDBロック制御詳細 その1 - BizStationブログ

    今回から数回にわたり、TransactdのオペレーションとInnoDBにおけるロックについて解説します。 ロックについてはあまり良くわからなくてもとりあえずそれなりに動くアプリケーションは作れてしまいます。ですが、マルチユーザー環境でミッションクリティカルなアプリケーションを書くには、ロックの理解が不可欠です。ロックをうまく使って、矛盾や間違いのない読み書きをしつつ同時実行性も高いアプリケーションにしましょう。 その1では、Transactdを実装する上でMySQLのソースやドキュメントから得た知見を基に、InnoDBのロックの種類と分離レベルに応じてそれをどのように使うかをまとめてみます。 Index MySQLのトランザクション関連用語 MySQLのREPEATABLE-READ InnoDBのロック 行ロック (row-level locking) GAPロック GAPロック単体 ネ

    MySQL/MariaDBとTransactdのInnoDBロック制御詳細 その1 - BizStationブログ