PHPカンファレンス2016の資料です http://phpcon.php.gr.jp/2016/
必要メモリ量=グローバルバッファのサイズ+(各スレッドのバッファサイズの合計 × 最大接続数(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 へコピーするコマンド # データベースをコピー。db1(user1、password1) から db2(user2、password2)に mysqldump -u user1 -ppassword1 -n db1 | mysql -u user2 -ppassword2 db2 データベースを別のサーバの MySQL へコピーするコマンド # 別サーバにデータベースをコピー。db1(user1、password1) から hostname サーバ(ユーザ名 hostuser)の db2(user2、password2)に mysqldump -u user1 -ppassword1 -n db1 | ssh hostuser@hostname mysql -u user2 -ppassword2 db2 コピー元、コピー先など環境を整理! ひとつの
サーバーのエラーを検知したので確認してみると、mysql のログファイルに下記のようなエラーが出ていました。 どうやら WordPress で使用しているデータベースの wp_options というテーブルの読み込みでエラーが発生しているみたいです。 150102 23:20:17 [ERROR] Got error 127 when reading table './wordpress/wp_options' 調べてみると、テーブルが破損した可能性が高いらしい… ということで、テーブルを修復する手順を紹介します。 ※CUI 上で操作していますが、SQL 文さえ実行できればよいので、phpmyadmin 等でも修復可能です。 Mysql の破損したテーブルを修復 mysql にログイン #mysql にログイン sudo mysql -u root -p データベースの選択 mysql>u
こんにちわ。システムエンジニアのリョータです。 前回は、オプションをずらーっと並べて紹介しました。 mysqldumpの使い方 オプション編 mysqldumpのオプションが多すぎて、どこをどうすればいいのかわかりません。 ということで、今回はもうすこし実用的な形で進めたいと思います。 今回は、テーブルやデータベースをバックアップ&リストアをする、基本的な方法をまとめてみました! テーブル まずは、テーブルをバックアップ&リストアする方法です。 1.テーブルのダンプ mysqldump -uroot -p -hlocalhost database_name table_name > filename テーブルの定義とデータをダンプする方法です。 テーブルは、1つだけでなく複数指定することもできます。 mysqldump -uroot -p -hlocalhost database_name
あまりにも処理に時間がかかるようなSQLを実行してしまい、MySQLがうんともすんとも言わなくなってしまうような状況、よくありますよね。っていうか、まぁそんな状況あってはならないんですが、時たまあります。そんな時、問題となっているクエリの処理を止めたいわけです。 特定のクエリを止める方法 MySQLで実行中のクエリ一覧を見て、SQLを強制終了する方法 こちらを見てもらえればやり方は分かります。単純にMySQLに入って、show processlist;で問題のあるクエリを発見し、プロセスIDを kill するだけ。とても簡単。 複数のクエリを一括で止める方法 今回は問題のあるクエリが100個あったらどうする…?的なのを解決するエントリーです。まぁ、問題あるクエリ100個ある状況は、アプリ的に問題あるんじゃね?っていうレベルですが。 1個ずつプロセスIDをコピペして…なんてやってられないです
最近、SQLインジェクションのネタが盛り上がってるようだ。下記のTogetterまとめあたりが震源地だろうか。 「プリペアードクエリが基本だけど、動的に SQL を組み立てる場合もあるから、そういう場合に備えてエスケープも知っておいたほうがいいかも」 - Togetterまとめ まとめを読んだ感想としては、「どちらの意見も間違ってはいない」というものだ。前提あるいは見方が異なるために、見解の相違が生じているだけのように思う。SQLインジェクションについては私も若干思うところがあるので意見を書いておこうと思う。 攻撃を防ぐのは難しいSQLインジェクションをはじめとするセキュリティ対策が難しいのは、ひとつでも穴があると致命的なダメージを受け得るということだ。「どうやって効率よくコードを書くか」とか「コードのメンテナンス性を高めるにはどう書くべきか」みたいな議論とは全く質が異なる議論が必要になっ
徳島オープンセミナーというイベントに招いて頂き、MySQLの運用まわり(?)の話について話す機会に恵まれた。運用といいつつ運用以外の話も色々混じっているが、平たく言うと「MySQLを使う上で躓きやすいポイント」というのが今回のお題である。セミナーで用いた資料を公開したので気になる人は参考にして欲しいと思う。 以前岡山へ呼んでいただいたときも感じたのだが、やはり休日に勉強会へ参加されるだけあって、皆さん勉強熱心である。首都圏のように毎日何かしらの勉強会があるというような恵まれた環境は、徳島にはないかも知れない。だが、スキル向上に対する真剣な姿勢は勝るとも劣らないように感じられた。 懇親会では、LibreOfficeの榎氏と色々と意見を交換させて頂いた。(というより二人でかなり話し込んでしまった感がある。)何を隠そう榎氏とは初対面だったのだが、榎氏もソフトウェアの自由を大切だと考える言わば同志
PHP 公式マニュアルの SQL インジェクションのページには数値の扱い方がきちんと明記されている。 アプリケーションが、数値入力を期待している場合、データを is_numeric() で検証するか、 settype() により暗黙の型変換を行うか、 sprintf()により数値表現を使用することを検討してみてください。 サンプルコードも掲載されている。 settype($order, 'integer'); $query = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;"; // フォーマット文字列の%dに注意してください。%sを使用しても意味がありません。 $query = sprintf("SELECT id, name FROM products ORDER BY name LIMIT 2
仕事でMySQLのパフォーマンスチューニングをしていて、インデックスについて分かっていないことが多かったので調べたことをメモ。基本的なところから学習しなおした。 MySQLのインデックスは、カラムが特定の値をもつレコードの迅速な検索に使用される。インデックスを使用すれば、数百とか数億ものレコードが入っているテーブルから、一組のレコードを迅速に見つけて取り出すことが可能になる。 しかし、インデックスは速度を改善することもあるが、挿入の邪魔になって遅くなることもある。 インデックスを適切に使うために、まずはインデックスの基本概念をおさえる必要がある。 インデックスの概念 インデックスとは インデックスの仕組みを理解するには、まずMySQLがどのようにクエリに応答するかを知る必要がある。 例えば、 SELECT * FROM phone_book WHERE last_name = 'Hoge'
phpMyAdminを使ったSQLファイルのインポートにはファイルサイズの制限があり、サーバ環境によってはサイズの大きいSQLファイルをインポートできない場合があります。 これを解消してくれるのが「BigDump」です。 BigDump BigDumpは、PHPベースのMySQLインポートツールです。 先日行ったサーバ移転で、100MBほどあるSQLファイルのインポートにこれを利用しました。約100MBほどあるSQLファイルを分割もせず、わずか1分ほどでインポートすることができました。 ということで以下、BigDumpによるSQLファイルのインポート手順を解説します。1つのSQLファイルサイズがかなり大きくても大丈夫なようですが、エクスポートするSQLファイルは7項の手順にしたがって出力したものを利用することを推奨します。 1.BigDumpのダウンロード BigDumpのページの右にある
MyWebSqlはAjaxを多用した今風のUIを使ったMySQL管理ツール。 MyWebSqlはPHP製のオープンソース・ソフトウェア。PHPと言えばMySQL、その二つの組み合わせから生み出されたphpMyAdmin。LAMPスタックなんて言葉が生み出されたのにphpMyAdminの優秀さがあったことは否定できない。それくらい誰しもが使っているソフトウェアだ。 データ一覧 だが長い年月のうちにUIは古いものになり、ちょっと時代が変わってきているかという気がしなくもない。そこで今のWebに合わせたMySQL管理ツールを紹介しよう。それがMyWebSqlだ。 MyWebSqlはWebアプリケーション風のインタフェースに加えて、UIのデザインもポップで明るい配色になっていて使い勝手が良い。左側にデータベースの一覧、右側でデータの編集を行うスタイルはphpMyAdminと同じだ。さらに下にはSQ
PHPフレームワークの速度比較では、HelloWorldを表示するのみの単純なアプリを用いた計測を元に比較表が作られることが多いです。特に後発のフレームワークは分かりやすい特徴付けとして速度をアピールする傾向にあるため、その比較表を元に N倍速いというアピールをしています。 PHPフレームワークを使うということは、DBまで絡めたWebアプリを作ることがほとんどなため、HelloWorldアプリの比較よりは、DBからレコード取得して表示するまでの処理速度を比較したほうがより現実に近い指標になると思います。特にCakePHP1系ではDBのデータ取得も独自ドライバになっていますし、モデルの処理も重いのでそこまで含めて他と比較したほうが良いと思ってます。 今回はDBから1レコード取得して表示するという簡単なアプリで各フレームワークの速度を評価しました。フレームワークに備わっているViewキャッシュ
phpMyAdmin をセットアップします。 前のページで説明している 管理者用、ローカルクライアント用 のポリシーに基づいて分けて説明します。2.0.x / 2.3.x / 2.6.xに関する設定は削除しました。 2.9.x で再編しています。 このページでは phpMyAdmin の設定に関して説明します。 phpMyAdmin 導入に必要なパッケージ ここでは、RHEL FedraCore 2 / 4 と CentOS-4 / 4.4 で検証しています。記事修正にあたって、CentOS-4.4 クリーンインストール環境とパッケージとソースを利用します。 phpMyAdmin 設置前に行うこと MySQL 自体初めて利用される方は、先に MySQL の root パスワードを設定しておく必要があります。外部に公開された Web サーバの場合、MySQL サーバがパスワードなしの状態でフ
アイルというレンタルサーバ(iCLUSTAプラン)の MySQL のバージョンアップ作業を依頼されました。 現状は MySQL4.0 を使ってるっぽいんですが、 MySQL5 に移行するようアイル側から通知があったそうです。 バージョン4は夏ごろに利用不可になるとか。。(そもそもパッチ提供がとっくに終わっている4.0をここまで引っ張るのも問題ですが...) で、アイルのWEBサイトでDBバージョンアップについての情報を探してみましたが、ほとんど見当たりません。 仕方ないので、問い合わせることに。。 Q1:バージョンアップ時に、既存のテーブル構造、データを移行するようなシステムはあるのか? A: ない。DBManagerから、ダンプ・リストアをユーザ側でやって。 Q2:ストレージエンジンは選べる? A: MyISAM,InnoDBが選べる。 Q3:テーブルの文字コードは選べる? A :MyS
こんにちは、 1.ワードプレスでは、エントリの上限や、ページの上限が決まっていますか? ワードプレス由来の条件だけでなくても、MySQL由来の条件によって結果的にワードプレスの制限になっているような事も、あればお願いします。 2.タイトルと、本文、カテゴリ名、の文字数制限はありますか? 日本語で何文字くらいですか? 3.制限でなくても経験として、エントリの文字数にまつわる注意点などありましたら、教えてください。 4.特別なカスタマイズをしないで、ここはすごいよ、(エントリやページの数で)というワードプレスのサイトがあれば、教えてください。 5.制限でなくても、もうこのワードプレスいっぱいだから、新しいの作ろう。と考えた事がある人がいたら聞きたいのですが、「いっぱい」というイメージは、どういう時にそう思ったか、教えてください。 どれかひとつだけでも、かまわないので教えてください。 具体的なし
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く