タグ

MySQLに関するwarabiのブックマーク (23)

  • MySQL と寿司ビール問題 - かみぽわーる

    MySQL と Unicode Collation Algorithm (UCA) - かみぽわーる に関連するトピックで、 MySQL には寿司ビール問題というのがある。 寿司ビール問題どっかで詳しくお話を聞くべきだよなぁ。。。— RKajiyama (@RKajiyama) March 18, 2015 これはどういう問題かというと、 MySQL の Unicode では binary collation にしてコードポイントで比較しないと🍣と🍺に限らず絵文字が同値判定されるという問題です。 あれ? MySQL の utf8mb4 charset って、4バイト文字同士を比較すると同じ文字扱いされる? SELECT '🍣'='🍺' → 1 MySQL的には寿司とビールは同じ扱い。— とみたまさひろ (@tmtms) December 22, 2014 MySQLで select

    MySQL と寿司ビール問題 - かみぽわーる
  • MySQL のチューニング (ボトルネックの検出) : Figure out!! -ドリコムエンジニアブログ

    こんにちは! onk です。 SAPさんが各社とも「ソーシャルアプリは負荷対策が大事」って言っていますね。弊社でも mixi アプリ(PC),mixi アプリモバイルをリリースしたときはお祭り状態だったので,ふりかえりも兼ねて MySQL のボトルネックを調べる方法を書いてみました。(幸い,モバゲーオープンゲームのリリース時はこれらの経験が役に立ったので何ともなかったです) といっても 9 割方 そもそもサーバの設定がおかしい 更新が多いテーブルなのに MyISAM エンジン for 文の中でクエリを発行 INDEX 張ってない データ量がえらいことになってる 辺りなんですけどねー。 基は下から まず,ボトルネックを調べるときは下の層から上がっていくのが基です。たぶん。 なので ssh でサーバに入って (LoadAverage 300 ぐらいまでならなんとか入れますね) 以下のコマン

  • 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の差分とか - (ひ)メモ
  • クリアネオの口コミって信じていい?効果は確実なの? | 愛と小町

    クリアネオの特徴 無添加・無着色だから肌が弱い人でも安心 ワキガや嫌な臭いの原因となる菌を殺菌・消毒 お得な定期コースは、購入縛りなし!いつでも解約可能 体臭の悩みは老若男女問わず共通の悩みですが、他人には相談しにくいので1人で悩んでいる人が多いんです。 体臭って、自分でニオイが気になった時は、他の人はもっとクサイと思っています。 もしあなたが、自分でワキガかも…と思うのであれば、周りの人はあなたのニオイに気づいているかも… クリアネオは、そんなワキガ臭や足のニオイなど、イヤーな体臭全般を10秒でカットしてくれるんです。 クリアネオの効果や口コミを調査しましたので徹底解説します。 購入時に特典が付いてくるのでお得 公式サイトはコチラ ※特典は毎月変わるので公式サイトでご確認ください クリアネオはどんな人におすすめ? クリアネオの殺菌率は、なんと99.999%!体臭の悩みを解消してくれるクリ

  • MySQLをさらに理解するために読んだ記事まとめ - $shibayu36->blog;

    最近MySQLの勉強をしていました。実践ハイパフォーマンスMySQLを読むべきという話を聞いていたのですが、かなり網羅的に書かれていて、今の知識ではどれが重要なのかわからない状態でした。そこで色々調べてみて、参考になる記事をいくつか見つけたので、少しまとめてみようと思います。 今回まとめた記事を読んで、大体以下のことが理解できました。 インデックスの使われ方とその構造(MyISAMとInnoDB) EXPLAINの詳しい使い方、見方 InnoDBの特性 ALTER TABLEの特性 レプリ遅延 まず最初に Webエンジニアのための データベース技術[実践]入門 (Software Design plus)posted with amazlet at 12.06.02松信 嘉範 技術評論社 売り上げランキング: 9767 Amazon.co.jp で詳細を見る 松信さんの書いた「Webエンジ

    MySQLをさらに理解するために読んだ記事まとめ - $shibayu36->blog;
  • MySQLで任意の順番でソートする : Nacky - Snowland.net

    Info Nacky - Snowland.net - blogを移転しました A k i - B u g 2011-09-18(Sun) 22:00-05:00 @ Bagus(秋葉原) Waaaaan!! 2011-09-22(Thu) @ Module(渋谷) blip festival TOKYO 2011 2011-10-22(Sat)+23(Sun) @ KOENJI HIGH(高円寺) Google CalendarにEvent Schedule (Issei Ishii/Nacky) を公開中>feed IRC(wide系) #snowland DJブッキングはいつでも受付中! nacky(at)snowland.net までメールください. nacky - MyMiniCity 「このカラム内,2~3~1の順番でソートして欲しいんですけど!」 2,3,1でそれぞれSELE

  • Senna 2.0の展望と、Tritonnで問題が発生している人向け情報 - グニャラくんのグニャグニャ備忘録@はてな

    Senna 2.0βのリリースが見えてきました。 去年の夏に出すと言っていましたが、紆余曲折あっての現状です。 ライバルのTokyo Cabinet/Tokyo Dystopiaについては、 ストレージと全文検索インデックスを分割する方向性です。 mixi engineer blog 今までのSennaはTokyo Dystopiaに近いものでしたが、 Senna 2.0では逆にHyper Estraierのほうに近づく感じになっています。 それぞれ特色が出て面白いですねー。 今回は転置インデックス部分にもかなり手が入っているので、 Senna/Lucene/Tokyo Dystopiaのパフォーマンス比較もやってみたいと思います。 (とはいえ、パフォーマンス比較はそれぞれのライブラリに精通しないと意味のある情報が出せないので、大変ではありますね…) Senna 2.0 + MySQL 5

    Senna 2.0の展望と、Tritonnで問題が発生している人向け情報 - グニャラくんのグニャグニャ備忘録@はてな
  • やってはいけない!!MySQLに悲鳴をあげさせる10の方法

    いつも「MySQLを使うときはこうするべき」という観点から記事を書いているが、今日は逆に犯してはいけない過ちをリストアップしようと思う。 1. 全てのカラムにインデックスをつけるデータベース初心者がもっともやってしまいがちな間違いはコレではないだろうか。インデックスはいい。検索がとても速くなるから。しかし、それと引き替えにインデックスは更新するときにコストがかかるし、その分多くのディスクスペースを消費する。特に更新にかかるコストは時に甚大で、該当するインデックスのページがキャッシュ上にない場合はディスクからいったんそのページを読み込まなければいけない。ディスクアクセスは動作にとても時間がかかるので、インデックスが多数、例えば全てのカラムに付いていたりすると「あれ?固まったか?」というような状態になってしまうことがあるだろう。インデックスは必要なカラムにだけつけるようにテーブルを設計しよう。

    やってはいけない!!MySQLに悲鳴をあげさせる10の方法
  • MySQLパフォーマンスチューニングのためのインデックスの基礎知識 - 久保清隆のブログ

    仕事MySQLのパフォーマンスチューニングをしていて、インデックスについて分かっていないことが多かったので調べたことをメモ。基的なところから学習しなおした。 MySQLのインデックスは、カラムが特定の値をもつレコードの迅速な検索に使用される。インデックスを使用すれば、数百とか数億ものレコードが入っているテーブルから、一組のレコードを迅速に見つけて取り出すことが可能になる。 しかし、インデックスは速度を改善することもあるが、挿入の邪魔になって遅くなることもある。 インデックスを適切に使うために、まずはインデックスの基概念をおさえる必要がある。 インデックスの概念 インデックスとは インデックスの仕組みを理解するには、まずMySQLがどのようにクエリに応答するかを知る必要がある。 例えば、 SELECT * FROM phone_book WHERE last_name = 'Hoge'

    MySQLパフォーマンスチューニングのためのインデックスの基礎知識 - 久保清隆のブログ
  • 大きめのテーブルにカラムやインデックスを追加する際の注意 - LukeSilvia’s diary

    先日大きめ(といっても500万行くらい)のテーブルにインデックス付きのカラムを追加しようとして痛い目にあったので調査。 大きめのテーブルにカラムやインデックスを追加するとどうなるか 今回は単純に、「ALTER TABLE 〜 」で追加しようとしました。追加するカラムは3つで、 varchar(255) インデックスなし varchar(255) ↓のdate 型カラムとマルチカラムインデックスの形式のユニークインデックスあり date インデックスあり SQL を実行し、状況を「SHOW PROCESSLIST」で監視していたら、1つ目のカラム追加で次のような状態に… 最初にState が「copy to tmp table」状態になり、次の状態に遷移するまで1時間かかる 次にState が「Repair with keycache」状態になり、完了までに1時間かかる 次のカラム追加に対す

    大きめのテーブルにカラムやインデックスを追加する際の注意 - LukeSilvia’s diary
  • パフォーマンスを求めて - お前の血は何色だ!! 4

    結局、わかったことは、 次の4つ。 index から 実体へのシークは遅い。 すべてがindex内で完結するクエリーは早い。 limit をつけても where や order by すると意味がない。 indexを張るなら Using indexe をゲットできないと負けかな。 では、select で取得する値すべてに index を張りますか? 場合によっては可能ですが、テーブルに文字列なんかがふんだんに含まれていると難しいものがあり、現実的ではありません。 そこでこんな方法を提案します。2段階にわけてクエリーを打ちます。 A. task テーブルの 2008/6/5 〜 2008/6/18 のデータを開始日順にならべて、先頭5件だけ表示せよ。 select SQL_CALC_FOUND_ROWS * from task where task.task_starttime <= '20

    パフォーマンスを求めて - お前の血は何色だ!! 4
  • MySQLの照合順序:utf8_unicode_ciってなんぞ?: CodeIgniterで発火する?

    前回はヴァリデートのコードをそれぞれのメソッドの頭に記述して、なんちゃって入力チェックのようなことをやった経緯を書きました。あんな実装でも変なエラーが出なくなってきたので、まあヨシとしてます。 んで、ようやく今回は検索機能の強化?について書けるかな?と考えていたんですが、どうやろうか?などと思案しながらスクリプトをいじっていると奇妙な現象?に遭遇したので、検索機能の強化はまた後回しにして今回はそれについて書きます。 結論から言うと自分がMySQLの照合順序なるものを全く理解していなかったというだけの話です。「あ~それね」「今更何言ってんの?」と言い切れる方は以下は読む必要はありません。なので以下は個人的なメモです(愚痴とも言う…マタカヨ)。 まず奇妙な現象というのは以下のようなモノです。 例の五十音パッドで「た」で始まる新市町村を検索します。 伊達市 2006-03-01 大仙市 2005

    warabi
    warabi 2011/06/22
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 11.3.2 CHAR および VARCHAR 型

    CHAR 型と VARCHAR 型は似ていますが、格納および取得方法が異なります。 また、最大長と、末尾のスペースが保持されるかどうかという点でも異なります。 CHAR 型と VARCHAR 型には、格納する最大文字数を表す長さが宣言されています。 たとえば、CHAR(30) には最大 30 文字を格納できます。 CHAR カラムの長さは、テーブルを作成したときに宣言した長さに修正されます。 この長さには、0 から 255 までの任意の値を指定できます。 CHAR 値は格納されると、指定された長さになるように右側がスペースで埋められます。 PAD_CHAR_TO_FULL_LENGTH SQL モードが有効になっていないかぎり、CHAR 値が取り出されるときに、末尾のスペースが削除されます。 VARCHAR カラム内の値は可変長の文字列です。 長さは 0 から 65,535 までの値で指定

    warabi
    warabi 2011/06/10
    CHAR=桁が決まっていてNOT NULLのもの向き VARCHAR=最大文字数は決まっているがそれ以下の文字数も多いカラム向き?
  • MySQLノウハウ

    いろいろなからメモってきたメモのメモ。出典を書いておくのを忘れた。思い出し次第補完するかも。 deleteのコストは高いので、無効化を示すフィールドを作ってupdateすべき slow query logに要注意 多くのエントリでほとんどのフィールドが同じ値を持つ場合はインデックスの効果が小さい →複合インデックスの効果が大きい 複合インデックスは指定の順番が大切。AとBという指定の場合、A単独でもインデックスの効果がある。逆は真でない。 インデックスが使われる場面は フィールド値を定数と比較するとき (where name = 'hogehoge') フィールド値でJOINするとき (where a.name = b.name) フィールド値の範囲を求めるとき (<,>,between) LIKE句が文字列から始まるとき (where name like 'hoge%') min(),

  • 『Windows7にApache2.2とPHP5.3とMySQL5.1をインストール』

    ローカルのPCに、Web用の開発環境を入れた時の覚え書きです。 ちまちまとつまずいて、一週間かかりました…。

    『Windows7にApache2.2とPHP5.3とMySQL5.1をインストール』
    warabi
    warabi 2011/05/06
    参考になりました
  • MySQLのEXPLAINを徹底解説!!

    以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ

    MySQLのEXPLAINを徹底解説!!
  • ログインシステムを作っておりますが、DBに入れるパスワードを暗号化するやり方がわかりません。

    ログインシステムを作っておりますが、DBに入れるパスワードを暗号化するやり方がわかりません。 参考サイトはご存知ありませんか?

  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 11.3.5 ENUM 型

    列挙値は引用符で囲んだ文字列リテラルにする必要があります。 たとえば、次のように ENUM カラムを持つテーブルを作成できます。 CREATE TABLE shirts ( name VARCHAR(40), size ENUM('x-small', 'small', 'medium', 'large', 'x-large') ); INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'), ('polo shirt','small'); SELECT name, size FROM shirts WHERE size = 'medium'; +---------+--------+ | name | size | +---------+--------+ | t-shirt |

    warabi
    warabi 2010/06/04
  • エンタープライズ:MySQL独自のENUM・SET型を使ってみよう

    JAVA Developer特別企画] MySQL独自のENUM・SET型を使ってみよう 読者の皆さんは、テーブル定義に使用するデータ型で悩んだことはありませんか。フォームから入力されるデータはすべて文字列ですが、ラジオボタンやチェックボックス、選択ボックスのデータは決まった候補から選択する固定の文字列です。ここでは、MySQL独自のデータ型を使って、選択型の文字列を効率よく保存・参照する方法を紹介します。 JAVA Developer 2003年10月号より転載 MySQLのENUMおよびSET型は、文字列型に分類されるMySQL独自のデータ型です。ENUM型はプルダウン式の選択ボックスやラジオボタン、一方、SET型は複数のチェックボックスにうまく適用できそうなデータ型だと思います。まずはENUMとSET型を使ったテーブル定義を見てみましょう。

    warabi
    warabi 2010/06/04
  • MySQL演算子・関数

    MySQLの演算子や関数について説明します。 なお、個人的に必要無いと思うものについては省略しています(笑)。 MySQL5.0.16対応 最初に MySQLでは、数値⇔文字列の変換は自動的に行われます。 SELECT 100 + '200' -> 300 SELECT 100 < '200' -> 1 (TRUE) SELECT 100 < '22' -> 0 (FALSE) 比較演算子 比較演算の結果は、1(TRUE) / 0(FALSE) / NULL のいずれかになります。 例を挙げます。 SELECT 1 = 1 -> 1 SELECT 1 = 3 -> 0 SELECT 1 = NULL -> NULL SELECT NULL = NULL -> NULL 最後の結果に注意して下さい。 どのデータベースにも共通して言えることですが、NULLという値は 特別な意味を持ちます。 N