「MySQL」タグアーカイブ

mysqlがEXPLAINですら重い時に

mysqlがやたら重くなっていて、テーブル表示とかは問題ないのに普通のSELECTでも30秒くらいかかるようになっていました。

ビューテーブルとか使いまくっていたので最初そのせいかと思って調査を始めたのですがEXPLAINですら相当重い・・・。

をすると、大量にSELECTやらUPDATEやらがLOCK状態になっていました。こういうこともあるんですね。15年ほど使ってて初めて。

でなんとかなりました。

以下のブログが大変参考になりました。

[blogcard url=”http://d.hatena.ne.jp/takami_hiroki/20101027/p1″]

[blogcard url=”http://tech.basicinc.jp/MySQL/2014/04/06/mysql_processlist_kill/”]

mysqldumpでAUTO_INCREMENTの初期値をはずしたい

何もオプションを付けずにmysqldumpすると

となります。AUTO_INCREMENTの初期値が引き継がれてしまっていて邪魔ですね。

とすればすっきりしたdumpが吐出されます。

でもDBエンジンとか文字エンコーディングとかが抜けてると、使い物にならないですね。そこでこうするらしいです。

sedで文字列変換なんて、なかなかの力技!

参考

stackoverflow – mysqldump – Export structure only without autoincrement

MySQL Documentation 7.11. mysqldump — データベースバックアッププログラム

【cakePHP】トグルスイッチをAJAXで反映させる

さして目新しいことでもないですが簡単な小ネタでも。

トグルスイッチを切り替えるたびにDBを書き換えることは簡単にできます。
cakePHP2.0+jQueyMobile1.2でのトグルスイッチのDBへの反映のやり方です。いいやり方か分からないですが何かの助けになればと。

cakePHPのアクションは

こんな感じです。これをコントローラに記述して /{コントローラ名}/toggleValid/{ID} にアクセスするたびにvalidカラムが0と1に交互に変わります。CASE文で判定すればいろいろできて便利なのでcakePHPでSQL組み立てるやり方が分からないときはとりあえずqueryファンクション使っちゃいます。

そしてこの関数はコントローラーでなくモデルに書くべきものなので実際にはモデルに書いてます。またjQueryMobileと組み合わせているので下のようになります。

[共通読み込みJavaScriptファイル]

このファイルはjQueryMobile特有の処理をしています。最初のイベントバインドはDOMキャッシュを有効にしたままJavascriptを実行させるため、data-role=”page”の属性を持つコンテナにidを割り振り、そのページコンテナの初期イベントを監視しています。

[ビューファイル(index.ctp)]

$validと$idはコントローラからセットしておいてください。data-idはjQueryMobileではおなじみのHTML5の独自データ属性です。これでデータIDをjQueryへ渡すのが簡単です。

[AJAX呼び出し先コントローラー]

[モデル]