![【MongoDB】初めてでも分かる!MongoDB入門(前編) | ヘッドウォータースのブログ TechNote](https://cdn-ak-scissors.b.st-hatena.com/image/square/1bfa7eb15843ffda722fd9ce97ce3f71c4cd40b1/height=288;version=1;width=512/https%3A%2F%2Futage.headwaters.co.jp%2Fblog%2Fwp-content%2Fuploads%2F2015%2F04%2Fmongo.png)
このエントリは、MySQL Casual Advent Calendar 23日目のエントリです。 どうもどうも乙カレー様です。桑野です。 お酒が入ってるとわけわかんないことをいうことがおおいんですが(ごめんなさい) さてブログ書こうと思ってアドベントカレンダーのページ見なおしたらなんか書いてあるんですよね。 MySQLだっつってんだろ。 ということで何書こうかなと思ってたんですが、ネタ記事としてシェルスクリプトだけでMySQLからMongoDBへの移行しちゃうのをやろうかと思います。 誰得なのかということであれば俺得です(∗ᵒ̶̶̷̀ω˂̶́∗)੭₎₎̊₊♡ウケトレィ! と言うかなんか怒られそう、、、ごめんなさいごめんなさいネタが思いつかなかったんですホントですm(_ _)m ちゅーわけでテストテーブル作ってみる。 まずは移行元のMySQLにテーブル作ってみましょ。 適当に。 mysql
MySQLのデーターベースをバックアップするのは割と簡単なんですが、実は登録されたユーザー情報は別にバックアップしないといけないんですよ。 先日、そのことを知りました。 こういう情報って、こういうブログにちゃんと書いておいたほうがいいですよね。 と言いつつ、なかなか書きそびれていたんですが。 具体的にはこんな感じ。 mysqldump -u root-p -x --all-databases > hogehoge.dump mysqldump -u root -p -x --allow-keywords mysql > hogehogeuser.dump 上の1行でデータベース全体のバックアップをします。 下の1行でユーザー情報をバックアップします。 リストアは以下のとおり。 mysql -u root -p < hogehoge.dump mysql -u root -p mysql <
間違って主キーと同じ値を含む行を挿入しようとしたらエラーを出して教えてほしいとき INSERT INTO test VALUES(1,100); とすると、ERROR 1062 (23000): Duplicate entry '1' for key 1 というエラーが出る。 間違って主キーと同じ値を含む行を挿入しようとしても無視して処理を続行してほしいとき INSERT IGNORE INTO test VALUES(1,100); とすると、Query OK, 0 rows affected (0.00 sec) と表示される。テーブルは変更されていない。 主キーと同じ値を含む行がないなら新しく挿入し、あるならその行を更新してほしいとき REPLACE INTO test VALUES(1,500); とすると、Query OK, 2 rows affected (0.00 sec)
こないだいくつかのサービスやブログのデータベース移行を行った。 DBMSはおなじみMySQL。 移行と行っても停止して全然問題のないデータベースなので単純にmysqldumpして流し込むだけなのでお手軽簡単。 ただ移行前のMySQLは文字コードが完全バカ設定だったが、移行後のMySQLは真面目状態に設定した状態になっているので、文字コードにちょっと気を遣ってやる必要がある。 移行前のデータ 移行前のMySQLには入っているデータに二つのケースがある。 テーブルの文字コードがlatin1でUTF-8のデータが入っているケース テーブルの文字コードがUTF-8でUTF-8のデータが入っているケース 後者の場合は何も考えずダンプしたデータをそのまま流し込めばいいので苦労はないが、前者の場合は次の手順でダンプ内容をちょっと書き換える。 まずダンプする。 そのまま手を加えず取り出すためlatin1で
ランキングを取得するSQL です。 同じスコアの場合は同じ順位にするなどの必要があるため結構面倒ですが、 下記SQL でイッパツで取得できます。 実際に携帯ゲームのランキングを取得するのに使用しているSQLです。 ranking テーブル CREATE TABLE ranking ( id bigint(20) NOT NULL auto_increment, name varchar(20) NOT NULL, score bigint(20) NOT NULL, ); SQL SELECT r1.name, r1.score, (SELECT count(r2.score) FROM ranking as r2 WHERE r2.score>r1.score)+1 as rank FROM ranking as r1 ORDER BY r1.score DESC LIMIT 10; r
以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ
MySQLで特定のレコードを中心とした前後のレコードを抽出する方法は? 例えば、 (以下のように出力させたい) *ID、品名、金額というカラムにそって値を抽出 001 イチゴA 198 002 イチゴB 199 003 イチゴC 200 ----------- 004 イチゴD 201 ←特定のレコードとして ----------- 005 イチゴE 202 006 イチゴF 203 007 イチゴG 204 ---------例、以上 特定の値を「004 イチゴD 201」として、この値の前後(金額でソート)三件の値を出力させたい場合にはどのようにしたら、良いのでしょうか? 「004 イチゴD 201」より安い金額のレコードを三件、「004 イチゴD 201」より高い金額のレコードを三件 この条件式(SQL文)を教えて頂けないでしょうか?(ヒントなど) よろしくお願いいたします。
使う機会はあまり無い気もするけど、何かの時に使えると便利かもしれないMySQLの文字列関数をざっくり紹介。 1. CONCAT - 文字列を連結 SELECT CONCAT('Ma', 'ria', 'DB'); -- 'MariaDB' 引数はいくつでもOK。ちなみに、「--」はSQLのコメント記法。 2. SUBSTRING - 文字列を指定した位置で切り出し 上は標準SQL。下はMySQL独自。 ・前から6番目以降の文字列を取得 SELECT SUBSTRING('Knowledgebase' FROM 5); -- 'edgebase' SELECT SUBSTRING('Knowledgebase',5); -- 'edgebase' ・前から3番目以降、7文字を取得 SELECT SUBSTRING('Knowledgebase',FROM 3, FOR 7); -- 'wle
2013-01-04 MySQLのクエリキャッシュ MySQLのクエリキャッシュは、クエリとクエリの結果を保持しておくキャッシュで 全く同じクエリが発行された場合はクエリキャッシュを取り出すので有効。 更新が多い場合はクリアされてしまうので、更新系が多いゲーム系のWebサービスでは 不向きとされている。(オーバーヘッドが増えるため) 逆に全く同じクエリが大量に発行される場合はかなり有効となる。ただし全く同じクエリが 大量に発行される場合はそもそもmemcache化されたりしている気もするが。。。以前はquery_cacheを入れると効果的な場合が多かったが、現状のWebサービスでは 切ったほうが性能がいいという記事の方が多い。 ただ、きちんと設計されている場合は更新が多い今時のサービスは切ったほうがいいのだろうが 意外とうまくmemcache化ができていない箇所があったりし
https://github.com/rackerhacker/MySQLTuner-perl MySQLTunerはMySQLのチューニングを診断してくれるアプリケーションです。 基本的なパフォーマンスチューニングのヒントをわかりやすく表示してくれます。 MySQLのチューニング設定に不安な方や、はじめてMySQLをさわる方は試してみると良いでしょう。 ライセンスはGNU GPLで無料で使えます。 検証環境 CentOS 6.3(64bit) MySQL 5.5.28 MySQL 5.5をインストール MySQL 5.5をインストールします。 # wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm # wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86
DBのチューニングはインフラ環境、アプリのつくり等、その時の状況で調整する必要があります。今回はMySQLTunerというMySQLを診断してチューニングをアドバイスしてくれるツールを使って、実際にMySQLのチューニングを行いました。 MySQLTunerは警告項目に関してのみの情報は多いのですが、警告が出ていない項目に関する情報が少ないので、今回の診断結果をもとに詳しく解説していきます。 MySQLTunerのインストール まずはMySQLTunerをインストールしましょう。 MySQLTunerはPerlで作成されており、無料で利用できます。 インストールといっても、「サイトからzipファイルを取得して解凍するだけ!」といった至ってシンプルな作業です。 以下、インストールのサンプルコマンドです。 # cd /usr/local/src/ # wget -O MySQLTuner.zi
通常は my.cnf に以下の設定をして restart すればいいのですが、稼働中のサービスの場合、再起動したくないこともあります。 slow_query_log=1 long_query_time=3 そういうときは、set global すれば動的に有効にできます。 mysql> set global slow_query_log=1; mysql> set global long_query_time=3; が、なぜか long_query_time の値が反映されません。デフォルトの 10秒のままです。 mysql> show variables like 'slow_query%'; +---------------------+-------------------------------------------+ | Variable_name | Value | +---
MySQLのバージョン インストールされたMySQLのバージョンは以下のようになります。 名前 バージョン ダウンロード元 my.cnfサンプル 以下のサンプルを参照して、my.cnfファイルを作成してください。 # このファイルは MySQL 5.6を基準として作られてあります。 # http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html を参照しました。 [mysqld] ##-------------------------------------------------------------------- # mysqldの基本設定 ##-------------------------------------------------------------------- # id は 1 から 2^
have_query_cache サーバーシステム変数は、クエリーキャッシュが使用できるかどうかを示します。 mysql> SHOW VARIABLES LIKE 'have_query_cache'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+ 標準 MySQL バイナリを使用している場合、クエリーキャッシュが無効にされている場合でも、この値は常に YES です。 ほかのいくつかのシステム変数は、クエリーキャッシュ操作を制御します。これらは、mysqld の起動時に、オプションファイルやコマンド行で設定できます。クエリーキャッシュシステム変数はすべて、qu
MySQL 5.0のストアドプロシージャをチェック:エンタープライズ市場に向かうMySQL 5.0(後編)(1/3 ページ) MySQL 5.0最大の目玉はストアドプロシージャである。インストールした5.0を使って、ストアドプロシージャの動作を試してみよう。(編集局) # mysql -u root mysql> use test Database changed mysql> desc REGION; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | NO | int(11) | | P
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く