タグ

MySQLに関するm4iのブックマーク (124)

  • 論理削除と一意性制約を両立させる方法・DB製品別 - Qiita

    アプリケーション上でなにかエントリ(例えば記事だとかユーザだとか)を削除したとき、DB上の行は削除せず単に【削除済み】フラグを立てるだけという扱い方を 論理削除 と呼びます。 論理削除にはいろいろなメリットがあります。行削除のように関連する他テーブルへ削除が波及しないこと、エントリ復活ができること、障害時にデータ変更の経緯を追いやすくなることなどなど(デメリットもわんさかあるんですが、この記事の主旨からははずれるので別途お調べください)。 ところが論理削除の方針でDBを組んでいて困ったことはありませんか? 「 メールアドレスは一意性(UNIQUE)制約をかけたいのに、それだと削除済みのユーザと同じメールアドレスが使えないことになる 」 論理削除と一意性制約、両立はできないのか? できないと思っている方、多いと思います。実はちゃんとできます。DB製品によって実現方法がちょっと違ってくるだけで

    論理削除と一意性制約を両立させる方法・DB製品別 - Qiita
    m4i
    m4i 2017/05/12
  • ルーク!MySQLではkamipo TRADITIONALを使え! | おそらくはそれさえも平凡な日々

    よくMySQLはゆるふわだから 値が勝手に切り詰められる エラーが起きずに変な値/日付が入る 不正なスキーマが入ってしまう など言われることがあります。ただそれは、そもそもの設定が悪いのです。(確かに昔デフォルトがゆるふわなのはいけなかったんですが) ということで、データベースには不正な値が入らないように設定はとにかく厳しくしておくのがオススメです。 じゃあどうするか。 MySQLSQL Modeによって、その辺りの制約をコントロールすることができます。以前、MySQLsql-modeで一番厳しいやつはTRADITIONAL、というのを書いたのですが、実はそれだけでは不十分で、TRADITIONAL,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BYとするのがより安心なようです。 これはkamipoさんに教えてもらいました。 @songmu TRADITI

    ルーク!MySQLではkamipo TRADITIONALを使え! | おそらくはそれさえも平凡な日々
    m4i
    m4i 2015/07/09
  • ActiveRecordでデフォルトの照合順序を変更する - Qiita

    MySQLには文字列の照合順序(collation)というのがあって、MySQL側でのcharset utf8のときのデフォルトの照合順序はutf8_general_ciです。 ActiveRecord::Migrationでは明示的に照合順序を指定しない場合、charset utf8で照合順序utf8_unicode_ciのデータベースを作成しますが、これは少なくとも日語圏では多くの人が期待する挙動ではないと思われるので注意が必要です。 たとえば、以下のようなファミリーテーブルをrake db:migrateすると # coding: utf-8 class CreateFamilies < ActiveRecord::Migration def change create_table :families do |t| t.string :name t.string :relation

    ActiveRecordでデフォルトの照合順序を変更する - Qiita
  • 文字列型の使い分け — Let's Postgres

    また、PostgreSQL にはいわゆる CLOB, BLOB のような巨大データ専用の型は存在せず、1GB までであれば text や bytea 型をそのまま使えます。1GB を超える場合はラージオブジェクトも利用できますが、アクセスや管理の方法にクセがあるためお奨めできません。数MBまでは text や bytea を使い、それを超えるようなら外部ファイルとして保持したほうが、むしろ安心して運用できるかと思います。 char と varchar, text の比較 PostgreSQL の文字列は以下のような特徴があります。 1. char(n) や varchar(n) の 'n' は「文字数」を表す 他のデータベースではバイト数を表すものもあるので注意しましょう。 2. char(n) は n 文字になるように末尾に空白を追加して保持する n 文字ぴったりで無い限り、末尾の空白の

    m4i
    m4i 2014/11/12
  • DB 設計時のサイズ見積り[最新版] - Qiita

    こんにちは、すっかり秋ですね!@yone098 です。 みなさんDBの設計してますか? DB設計時のサイズ見積り 以前はてなダイアリーで書いた記事は5年前のものであり、リンクが切れているものがあるので最新版として MySQL, PostgreSQL, Oracle, SQLServer におけるDB設計時のサイズ見積りをまとめ直しました。 URL内のバージョン表記を変えると以前のバージョンの情報になります。 MySQLは、あまり情報に変化は無かったので Excel でマクロなどを作成して自社で自動算出出来るようにするのが良いと思います。 データタイプごとに必要な要求ストレージが決まっているのでレコードサイズが決まり、あとは要件次第で何レコードになるかを予測します。 データタイプごとに必要な記憶容量 テーブルの最大サイズ関連 http://dev.mysql.com/doc/refman/5

    DB 設計時のサイズ見積り[最新版] - Qiita
  • YappoLogs: なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか

    なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか ここ最近の大規模サービス関連したデータページング考です。 mysql 5.5.34 で試して記事書いてます。 bigdata テーブルは id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) なカラムがある前提です。もちろん InnoDB です。 2014年なんだからCOUNT(*)とかSQL_CALC_FOUND_ROWSとかLIMIT OFFSETのページングはやめようぜ - Togetterまとめが発端にみえるけど、わりと昔から話されてる事なんだけど、「nippondanji SQL_CALC_FOUND_ROWS」でググっても有用な情報ないし文書化されてないからしとく。 ページング処理で使われがちな機能です。 S

    m4i
    m4i 2014/03/13
  • 快適mysqlコマンド★カスタマイズの決定版 - (ひ)メモ

    この記事は MySQL Casual Advent Calendar 2013 の25日目の記事です。 自分の過去のブログも含めて、mysqlコマンドのカスタマイズについていろいろな情報がありますが、わたしがオススメの秘伝のタレをまとめたいと思います。是非、ご参考に。 定型文(SQL)のショートカット入力 「show create table TABLENAME\G」とか「select user,host,password from mysql.user order by user,host;」とか、よく実行するけど長くて入力するのがめんどうなのがありますよね。それをショートカットで入力できるようにする方法です。 mysqlコマンドで行編集ができるのは、readlineやlibeditをリンクしているおかげです。 従来の公式バイナリ配布物に含まれるmysqlコマンドはreadlineでした

    快適mysqlコマンド★カスタマイズの決定版 - (ひ)メモ
    m4i
    m4i 2013/12/29
  • 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
    m4i
    m4i 2013/10/28
  • MySQL 5.6 パラメータ検討会 - SH2の日記

    7月29日にMyNA(日MySQLユーザ会)会 2013年7月が行われ、Oracle ACE Directorの@sheeriさん、MyNA会長の@tmtmsさんに混ざって発表をしてきました。運営のみなさま、当日お越しいただいたみなさま、いつもありがとうございます。 Performance Schema - Sheeri Cabral (PDF) MyNA会2013年7月 に行って来ました - MySQLのプロトコル解説 - @tmtms のメモ 今回は@yoku0825さん、@yyamasaki1さんがライトニングトークをされました。@yoku0825さんアイスごちそうさまでした。 日々の覚書: MyNA会2013年7月に行ってきました 5分で作るMySQL Cluster環境 私は発表内容について懇親会でいろいろ宿題をもらってしまい、しばらく復習をしていました。ようやく修正が終わりま

    MySQL 5.6 パラメータ検討会 - SH2の日記
    m4i
    m4i 2013/08/07
  • http://www.mysqlpracticewiki.com/index.php/MySQL%E3%82%B5%E3%83%BC%E3%83%90%E3%81%8C%E6%B6%88%E8%B2%BB%E3%81%99%E3%82%8B%E3%83%A1%E3%83%A2%E3%83%AA

    m4i
    m4i 2013/08/04
  • 今さらだけどMySQLとライセンス

    (↓間違いの訂正アリ↓)第4回大阪MySQL勉強会資料 06/03 修正 ◆@y_catch さん @yoku0825 さんに教えていただいた誤謬の修正 ・「使用権」は誤解を招くと教えていただいたので "「使用」と「利用」""ライセンスの2つの法的根拠"などを修正 また、使用が権利でないことの理解の一助となるよう "「使用」と「利用」とライセンス"のページを追加 ・GPLのバージョンについての情報を追加して、用語はGPLv2へ統一(したつもり) ・"MySQLの著作権"について、教えていただいた情報を元に修正 ◆また、以下も修正 ・発表直前に書き上げたため、推敲せず話の繋ぎがうまくいってない箇所や 分かりにくい説明、見にくいところなどを修正 ・[GNUによる4つの自由]で自由の保障で勘違いしてたところを削除 ・オープンソースライセンスの定義を正しいものに修正 ・時間がなくて機械翻訳のままだ

    今さらだけどMySQLとライセンス
  • MySQL をキューに使用する 5 つの微妙な方法とその落とし穴 (翻訳版) - Engine Yard Blog JP | Engine Yard Blog JP

    記事は英語版のブログに2011年9月15日に投稿された記事の翻訳版です。今回のゲスト投稿は Percona の皆さんによる記事です。同社では 2011 年 10 月 24 日と 25 日に Percona Live London というイベントを開催します。この 2 日間にわたるイベントでは、MySQL の分野における経験豊かなスピーカーにより、純粋に技術関係のセッションが行われます。 ロンドン周辺からの参加をご希望の方は、今週が無料パスを手に入れるチャンスです。応募方法は @engineyard のツイッター フィードをチェックしてください。 私は MySQLコンサルタント会社 Percona に勤務しています。記憶の補助として、お客様から解決を依頼された興味深い問題についてメモしたテキスト ファイルを作成し、すぐに参照できるようにしています。その中で頻度の高い問題のカテゴリとして

    m4i
    m4i 2013/03/24
  • チューニンガソン5の復習 MySQL 5.5 チート編&勉強会のお知らせ - SH2の日記

    ゼロスタートの@zakiさんを中心に企画、運営されているチューニンガソンというイベントがあります。指定された環境を用いてOSやサーバ周りのチューニングを行い、性能を競うというものです。2013年1月に行われた第5回ではMySQLがテーマだったということで、日はこれの復習をしていこうと思います。 【レポート】いろいろチューニングしてパフォーマンスを競うバトルイベント!「Tuningathon」第5弾! #tuningathon : ゼロスタートの広報ブログ 2013年最初のチューニンガソンはMySQL!――第5弾! いろいろチューニングしてパフォーマンスを競うバトルイベント「チューニンガソン」レポート:レポート|gihyo.jp … 技術評論社 Tuningathon#5 - Togetter しばらく真面目にチューニングしていたのですが思いのほか難しかったので、今回はちょっとズルをして優

    チューニンガソン5の復習 MySQL 5.5 チート編&勉強会のお知らせ - SH2の日記
  • MySQLTunerでMySQLのチューニングを診断する方法

    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

    MySQLTunerでMySQLのチューニングを診断する方法
    m4i
    m4i 2012/12/25
  • MySQLの設定ファイル my.cnf をgithubにて公開しました & チューニングポイントの紹介 - blog.nomadscafe.jp

    YAPC::Asiaのスライドで予告していた通り、実際に弊社のいくつかのサービスで使っている my.cnf を公開しました。 github: https://github.com/kazeburo/mysetup/tree/master/mysql 今回、公開した理由はMySQl Beginners Talksの発表の中でも触れている通りです。MySQLのソースコード中に含まれるサンプルのmy.cnfが最近のサーバハードウェアや運用に合わなくなって来ているという状況で、自分の設定にイマイチ自信が持てていない人は少なくないはず。そこで各社秘伝のタレ的な my.cnf をOpen & Shareすることで、モダンなmy.cnfを作り上げる事ができるんじゃないかという考えの下、今回 github にて公開しました。 ファイルは4つあり、それぞれ MySQL 4.0、5.1、5.5、そしてテスト中

    m4i
    m4i 2012/10/08
  • MySQL 5.1→5.6のmy.cnfの差分とか - (ひ)メモ

    MySQL 5.1で使ってたmy.cnfを試しに5.6で動くようにしたときの差分す。網羅的には調べてないんで他にも廃止になったパラメータはあるかもです。あくまで参考までに。 # log-binにパラメータ指定しないと怒られます -log-bin +log-bin = mysqld-bin # old-passwordsはオン、オフだけじゃなくて引数(0, 1, 2)が必須になって、引数の値によって挙動がかわります。 -old-passwords +old-passwords = 1 # これ指定しないと、リモートからのpre-4.1な認証方法で接続できないです +skip-secure-auth # これ指定しないと、pre-4.1な認証方法で接続できないです★下に追記あり +default-authentication-plugin = mysql_old_password # パラメー

    MySQL 5.1→5.6のmy.cnfの差分とか - (ひ)メモ
    m4i
    m4i 2012/10/04
  • Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT

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

    Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT
  • 第2回 ioDrive+MySQL勉強会 発表資料 | 外道父の匠

    GMOさんのところで、ioDrive+MySQLの発表をしてまいりました。 前回のFluentdから中4日で登壇という恐ロシアなスケジュールに真っ白な灰となっております。 1番手だったので基を抑えつつ尖り気味のところまで入れてしまったせいで、40分のところを53分使い、さらに質疑応答で1時間以上になり、他の発表者や参加者にご迷惑を、そしてピザを冷えさせて申し訳ありませんでした。が、資料自体はぼちぼちな出来になったと思いますのでサクッと公開しておきます。 事前にページを削りとってしまったり、早送りで説明してしまった部分があるので補足したいところなのですが、燃え尽き症候群中なのでMySQL関連は後で少しずつ書いていけたらと思います。 戦利品 Fusion-IO社のサンタクロースと言われる例の方が、登壇者にプレゼントをしてくれました。 ゴルフシャツですが Mサイズ Woman用で、微妙に形が女

    第2回 ioDrive+MySQL勉強会 発表資料 | 外道父の匠
  • 今更CAP定理で分散データストアの勉強を始めてみた - As a Futurist...

    長くなったので三行でまとめると CAP 定理を素人なりに調べてみた 分散データストアを CAP 定理で俯瞰してみた どのデータストア使うかの決定因子は CAP 定理的な視点の方がインタフェースとかより先 異論は認めるというか、専門知識ゼロなのでもっと正しい理解があればぜひ教えてくださいませ。 はじめに 僕は MySQL 厨なんですが、最近はやれ「MongoDB がいい」だの「HBase 最高」だのとよく聞きます。これら多種多様なデータストアを語る上で、「RDBMS VS NoSQL」みたいに問い合わせ言語の方式やデータ保存形式の違いで語るのは宗教論かなぁと僕は思ってます。単体プロセスのデータストアとしての特徴とか性能とかは正直なんでもいいかなぁと。 思うに、質的に重要なのは MySQL の master-slave&sharding という Web で今までスタンダードに使われてきた分散

    今更CAP定理で分散データストアの勉強を始めてみた - As a Futurist...
  • 「MySQL Casual Talks vol.3」に参加してきたよ、のメモ - 元RX-7乗りの適当な日々

    4/19に、"カジュアル"ではなく"ガチュアル"と定評のある「MySQL Casual Talks」の第3回目に参加してきました。 尚、このイベントの過去の参加記録は以下。 「MySQL Casual Talks vol.1」に参加してきたよ、のメモ 「MySQL Casual Talks vol.2」に参加してきたよ、のメモ 今回は、すごくたくさん人がいたので、誰かがブログでまとめてくれるっしょー、とか思っていたのですが、ひょっとしたら誰もまとめていないんじゃないか疑惑、かもしれなかったので、重い腰をあげてエントリを書いてみることにしました。 駄菓子菓子! 当日は皆さんスピード感あふれる発表が多かったのと、僕はTwitterに書いていたりしたので、手元のメモがあまりないんですよね...(*´σー`)エヘヘ ということで、公開されている資料を集めて貼り付けた方がメモよりわかりやすいんじゃな

    m4i
    m4i 2012/04/22