タグ

knowledgeとMySQLに関するraimon49のブックマーク (20)

  • 受取期限の過ぎたデータをMySQL上から削除する話 | GREE Engineering

    こんにちわ。せじまです。今回は地味で泥臭い話をします。ただ、割と平易な内容かと思いますので、初学者の方にもオススメです。 はじめに ゲームでは、受取期限のついたログインボーナス的なものがよくあります。ユーザが期限までに受け取らないと、ユーザからそのデータは不可視になりますが、必ずしも、不可視になった瞬間にデータベースから直ちに削除される、というわけでもありません。バッチジョブか何かで、ガベージコレクションのように削除するケースが多いのではないでしょうか。 また、論理削除という概念もあります。論理削除についてはいろいろ意見や考え方があるかと思いますので、ここでそれについては論じませんが、「削除フラグが立ってユーザから不可視になった後、三ヶ月以上経過したデータを削除したい」みたいなことは、ゲームに限らず、しばしばあるんじゃないかなと思います。 こういった、ユーザから不可視になってしばらく経過し

    受取期限の過ぎたデータをMySQL上から削除する話 | GREE Engineering
  • ヒゲモジャのギークが提案する技術習得戦略

    先月、Dbtech Showcaseで松信さんがデータベース技術の羅針盤という講演をされた。残念ながらプレゼンそのものを観に行くことはできなかったが、その前の日に松信さんと一緒に昼飯をべたとき、講演のあらすじについては伺っていた。その際にも同じようなことを松信さんには言ったのだが、スライドを見直した上で改めて自分の意見をまとめておこうと思ったので筆をとることにする。 なお、このエントリではスライドに書かれているトピックについて語るので、まだ松信さんのスライドを見てない人は先にスライドに目を通してからエントリを読んで欲しいと思う。結論は全く違った方向に進んで行くが、その点は了承して頂きたい。 あなたに選択肢はあるか?ひと握りの天才なら自分の興味のある分野を開拓することができるだろう。あるいはすでに成功を収めた人であれば転職に困ることはないので、成功しそうな会社に乗り換えることもできるだろ

    ヒゲモジャのギークが提案する技術習得戦略
    raimon49
    raimon49 2013/12/07
    熱い。身に付いたスキルの幾らかは無駄になっても良い。そう思う。
  • Devsの常識、DBAは非常識

    AIAWSで現世から離れる試み-仕事がちょっと大変な時もあったりするから�俺のかわりにAIにシステム作ってもらえるシステム作った話.pptxJun Suzuki

    Devsの常識、DBAは非常識
    raimon49
    raimon49 2013/09/26
    回答が直球で痛快、面白かった。
  • http://www.2ch-search.net/blog/3

    raimon49
    raimon49 2012/06/27
    InnoDBの実ファイル分割(innodb_file_per_table) バイナリログ削除期間の指定(expire_logs_days) 知らんかった
  • mysqldumpの--order-by-primaryオプションについて - SH2の日記

    TIPSです。このようなテーブルがありまして、 CREATE TABLE `link` ( `id1` int(11) NOT NULL DEFAULT '0', `id2` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id1`,`id2`), KEY `ix1` (`id2`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;データは以下のような感じで、このときは2,900万レコードありました。 +---------+---------+ | id1 | id2 | +---------+---------+ | 5 | 69 | | 5 | 1022 | | 5 | 1487 | … | 1081 | 2021414 | | 1081 | 2087813 | | 1082 | 11 | | 1082 | 225

    mysqldumpの--order-by-primaryオプションについて - SH2の日記
    raimon49
    raimon49 2012/01/23
    主キーでソートした状態でダンプしておくとリストアが速い。
  • rootのパスワードが必要なスクリプトを書く場合の注意点 - スコトプリゴニエフスク通信

    MySQLのrootユーザーのパスワードが必要なスクリプトを書く場合、 #!/bin/bash mysqladmin -uroot -ptiger ping のようにスクリプト自体にパスワードを書くのではなく、rootのHOMEディレクトリの.my.cnf(/root/.my.cnf)の中にパスワードを書き、rootユーザにしか読めないように600にしておく。 # cat > /root/.my.cnf [client] user = root password = tiger [mysqladmin] user = root password = tiger # chown root:root /root/.my.cnf # chmod 600 /root/.my.cnf と、ここまではいいのだが、テストとして、 $ sudo mysqladmin ping mysqladmin: co

    raimon49
    raimon49 2011/02/24
    sudo -HでHOMEを指定してsudo
  • ちょっぴり上行く SHOW PROCESSLIST の使い方

    MySQL サーバで詰まっているクエリを調べる際に SHOW PROCESSLIST を使いますが 実はこれもデータベースに蓄えられた情報を出力してるだけなんですよね。 データベース名 information_schema、テーブル名 PROCESSLIST はこんな構造をしています。 (ちなみに MyISAM で管理されています) mysql> DESC information_schema.PROCESSLIST; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | ID | bigint(4) | NO |

    raimon49
    raimon49 2011/01/31
    SHOW PROCESSLISTクエリはinformation_schema.PROCESSLISTテーブルを選択しているのとほぼ同義。応用することでちょっとしたツールが作れる。
  • mysqlコマンドをより便利に安全にするための小粒なTIPS集|サイバーエージェント 公式エンジニアブログ

    初めまして。2010年の3月に入社した oinume です。新年1月からウィルス性胃腸炎に罹りながらもなんとかこのエントリーを書いています。今回は、mysqlコマンドに関する自分が今まで学んだ&教えてもらった細かい実践的なTIPSを紹介します。小粒ですが何かの役に立てば幸いです。 edit (¥e)コマンド mysqlプロンプトにいながら任意のエディタでSQLが編集できちゃいます。具体的には、mysqlコマンドでプロンプト待ちの状態で mysql> edit のように edit または ¥e と入力すると、環境変数EDITORで設定してあるエディタが立ち上がりSQLが編集可能になります。編集が終わったらエディタを終了して ; とやればSQLが実行されます。viなどターミナルで動くエディタに慣れている人は長いSQLを編集する時に重宝する機能でしょう。この技は前職の同僚に教えてもらって、以降便

    mysqlコマンドをより便利に安全にするための小粒なTIPS集|サイバーエージェント 公式エンジニアブログ
    raimon49
    raimon49 2011/01/19
    my.cnfにsafe-updatesは追加しよう。
  • REPLACE INTO と INSERT ON DUPLICATE KEY UPDATE の違い - Enjoi Blog

    By clicking “Accept all cookies”, you agree Enjoitech can store cookies on your device and disclose information in accordance with our Cookie Policy. Accept all cookies

    raimon49
    raimon49 2010/10/28
    前者は構文名のとおりDELETEしてからINSERT SQL:2003のMERGE構文はMySQLにはまだ無い
  • 知って得するInnoDBセカンダリインデックス活用術!

    InnoDBはクラスタインデックスという構造になっている。今日はクラスタインデックスがどういうことかということを、皆さんに理解して頂きたい。もっとも理解して頂きたいポイントは「セカンダリインデックスのリーフノードには主キーの値が含まれている」ということだ。 主キーの構造InnoDBの主キーは次の図のように「データが主キーのリーフノードに含まれる」という構造になっている。このような構造をクラスタインデックスという。 このような構造になっていることには利点と欠点があるが、大きな利点は主キーの値で検索をすると非常に高速だということだ。主キーのリーフノードにたどり着いたときには、既にデータのフェッチも完了している。データとインデックスが別々に格納されているタイプのストレージエンジンでは、インデックスからデータの位置を読み取って、その後データファイルからデータをフェッチする。このように二段階の操作が

    知って得するInnoDBセカンダリインデックス活用術!
  • MySQLのVARCHARサイズについて

    正確な最大長がわからないときの最小かつ十分なサイズの値ってどう決めるのが良いのだろうーと思ってつぶやいてみたところ、多くの方々に返信いただけました。ありがとうございます。

    MySQLのVARCHARサイズについて
    raimon49
    raimon49 2010/10/03
    インデックス 255
  • 大人のためのInnoDBテーブルとの正しい付き合い方。

    InnoDB関連でよくある質問のひとつに「テーブルのメンテナンスは何をすればいいんですか?」というものがある。InnoDBMySQL 5.5でデフォルトストレージエンジンとなるため、InnoDBのテーブルメンテナンス計画を立ようと思う機会も増えることだろう。そこで、今日はInnoDBのテーブルメンテナンスの各種方法となぜそうしなければいけないかという理由を解説しようと思う。 ANALYZE TABLEテーブルメンテナンスの代名詞といえば、インデックス統計情報の更新ではなかろうか。運用を続けるうちに、知らず知らずインデックス統計情報が狂ってしまい、思うような性能が出ない。RDBMSにはそのような問題がつきものであるが、InnoDBの場合、ANALYZE TABLEは不要である。なぜなら、InnoDBが自発的に統計情報を更新するからだ。InnoDBは以下の条件に適合すると、ANALYZE T

    大人のためのInnoDBテーブルとの正しい付き合い方。
    raimon49
    raimon49 2010/09/27
    InnoDBテーブル運用の基礎知識。ANALYZE TABLEは自動で走る, DELETEによる無駄な領域が多いときはOPTIMIZE TABLE
  • 文字コードに起因する脆弱性とその対策

    PHPカンファレンス2010テックデイでの講演資料 PDFダウンロードは http://www.hash-c.co.jp/archive/phpconf2010.htmlRead less

    文字コードに起因する脆弱性とその対策
    raimon49
    raimon49 2010/09/26
    多バイト言語圏で考慮しなければいけない脆弱性について。増補版 (http://www.slideshare.net/ockeghem/ss-5620584) を読んだ。簡単にできるテストや現実的な選択肢など、スライド後半は必読。
  • ALTER TABLEを上手に使いこなそう。

    テーブル定義を変更したい。インデックスが壊れてしまったので再作成したい。そんな場合はALTER TABLEを使う。ALTER TABLEはテーブル定義を変更するお馴染みのコマンドであるが、その挙動は意外と知られていない。(エキスパートとおぼしき方々からも度々質問を受ける。)そんなわけで、今日はALTER TABLEについて解説しようと思う。 まず結論から言うと、なんとMySQLのALTER TABLEはテーブルのデータを全てコピーし直すのである。なんて無駄なことを!?と思うかも知れないが、テーブル定義(スキーマ)の変更を動的に行うには、ストレージエンジンによるサポートが必要であり、動的なスキーマ変更をサポートしているストレージエンジンはまだ少ないのである。(動的スキーマ変更をサポートしているのはMySQL Clusterぐらいだ。しかも追加だけ。)デフォルトで利用出来るMyISAMはInn

    ALTER TABLEを上手に使いこなそう。
    raimon49
    raimon49 2010/08/17
    >本当にスキーマの変更をしたい場合には注意するべき点が一つある。コマンドが一回で終わるように、カラムやインデックスの追加・削除を一行で書くということである。 / MySQLのALTER TABLEはテンポラリテーブルを用いて
  • InnoDBのリカバリ機能を検証してみる at nkjmkzk.net

    Oracle, Open Source, Privateinnodbはクラッシュ時のリカバリ機能を実装しており、mysqldがクラッシュした場合やOS自体がクラッシュした場合にもしコミットされたデータがテーブルから失われていても再起動時にib_logfileからコミットされたトランザクションを読み出し、それが実データ(デフォルトだとibdata)に反映されていなければ反映させるという処理が走ります。MySQLはinnodb_flush_log_at_trx_commitの値により、1秒毎、またはコミット毎にトランザクションをログファイルにフラッシュします。 今回は以下2点について検証を行いました。 1.クライアント側から発行したクエリがクラッシュ後にどこまで復旧されているか 2.リカバリにかかる時間の測定(ログのファイルサイズとの因果関係にも言及) 1の検証についてはinnodb_fl

    raimon49
    raimon49 2010/07/08
    innodb_flush_log_at_trx_commit 精度
  • http://www.interdb.jp/techinfo/mysql/m-2-08.html

    [InterDB] [著者HP] [PREVIOUS][UP][NEXT] ■■■■ [テーブルの構造] ■2-08■ InnoDB型 ■■■■ InnoDB型はトランザクション処理をサポートしているので、必然的にACID特性(Atomicity,Consistency, Isolation, Durability: 原子性,一貫性,隔離性,耐久性)が要求されます。 (いささか乱暴な区分ですが)MySQLはMVCC(Multi Version Concurrency Control: 多版型同時実行制御)により原子性と一貫性を、ログ法(Logging)により耐久性を保証するように実装されています(補足 1)。 InnoDB型テーブルのデータはシステム変数`innodb_data_file_path'に設定された(複数の)ファイルに分割して保管されます。 MySQLサーバはこれらの

    raimon49
    raimon49 2010/07/08
    InnoDB トランザクションログ 同期タイミング
  • http://www.mysqlpracticewiki.com/index.php?title=InnoDB%E3%81%AE%E3%83%AA%E3%82%B9%E3%83%88%E3%82%A2%E3%82%92%E9%AB%98%E9%80%9F%E5%8C%96

    raimon49
    raimon49 2010/06/23
    高速にリストアを行うための勘所。ログを無効にしてディスクI/Oを減らす。
  • MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.2.9 TRUNCATE 構文

    TRUNCATE [TABLE] tbl_name TRUNCATE TABLE はテーブルを完全に空にします。論理的には、これは全ての行を削除する DELETE ステートメントと同等ですが、いくつかの条件下では、違いがあります。 もしテーブルを参照する外部キー制約があれば、InnoDB テーブルに対しては、TRUNCATE TABLE が DELETE にマップされ、そうでなければ、高速切断(テーブルのドロップと再作成)が利用されます。外部キー制約の有無に関わらず、AUTO_INCREMENT カウンタが TRUNCATE TABLE によってリセットされます。 その他のストレージ エンジンに対しては、MySQL 5.1 の中では次のような方法で、TRUNCATE TABLE と DELETE が異なっています。 切り捨て操作は、テーブルをドロップ、再作成します。それは、行を1つ1つ削除

    raimon49
    raimon49 2010/02/22
    内部的にDROP TABLE→CREATE TABLE AUTO_INCREMENTはリセットされる。5.1.16からはユーザにDELETE権限ではなくDROP権限が必要。
  • mysql:13823

    From: "Yoshinori Matsunobu" <"Yoshinori Matsunobu" <ymatsunobu@xxxxxxxxxx>> Date: Mon, 26 Mar 2007 07:21:43 +0900 Subject: [mysql 13823] MySQLの現行UTF-8の問題とその対処方法について 松信です。 現時点で、MySQLの日語問題の中で関心が高い項目である、 UTF-8 4バイト文字の扱いについて、 問題の内容、現時点で取れる対処法、およびMySQL ABが 計画している対処案(現行utf8の改良)を以下に記述します。 計画中の対処案については、将来のバージョンで実装されることは確実ですが、 強い要望またはコミュニティからの貢献が無い限り早期の対応は難しいです。 強い要望のある方は、直接私までお知らせ下さいますようお願い致します。 以下、長文ですが

    raimon49
    raimon49 2010/02/05
    MySQL5.x では4バイト文字はサポートされない。
  • MySQLに纏わる10の都市伝説

    誰の口から飛び出したのかは定かではないが、巷ではMySQLにまつわる様々な「都市伝説」がまことしやかに囁かれているようだ。恐らくMySQLに対する理解が低い人や、MySQLがあまり好きではない面々によってFUDっぽく言われているのだと思うが、世の中にはそのような「都市伝説」を真に受けてしまう人が居るのもまた事実であである。MySQLにおける昨今の開発スピードには目覚ましいものがあり、MySQLは性能・安定性・使い易さ共に進化し続けている。(特に先日リリースされたMySQL 5.5は性能・安定性・使い易さを両立している優れたバージョンだ!!)しかし「都市伝説」で語られることは総じて「MySQLはダメな子ちゃん」であるという烙印を押すものばかりであり、MySQLerとしてはそのような言われ無き汚名を全身全霊をもって晴らさなければならない使命を背負っている。そこで、今日はMySQLについて語られ

    MySQLに纏わる10の都市伝説
    raimon49
    raimon49 2009/12/18
    >オフィシャルなバイナリはQAチームによってしっかりとテストされている
  • 1