タグ

mysqlに関するarerreeeのブックマーク (34)

  • SQLインジェクション対策に正解はない

    最近、SQLインジェクションのネタが盛り上がってるようだ。下記のTogetterまとめあたりが震源地だろうか。 「プリペアードクエリが基だけど、動的に SQL を組み立てる場合もあるから、そういう場合に備えてエスケープも知っておいたほうがいいかも」 - Togetterまとめ まとめを読んだ感想としては、「どちらの意見も間違ってはいない」というものだ。前提あるいは見方が異なるために、見解の相違が生じているだけのように思う。SQLインジェクションについては私も若干思うところがあるので意見を書いておこうと思う。 攻撃を防ぐのは難しいSQLインジェクションをはじめとするセキュリティ対策が難しいのは、ひとつでも穴があると致命的なダメージを受け得るということだ。「どうやって効率よくコードを書くか」とか「コードのメンテナンス性を高めるにはどう書くべきか」みたいな議論とは全く質が異なる議論が必要になっ

    SQLインジェクション対策に正解はない
  • ORDER BY 狙いのキーの話

    yoku0825 @yoku0825 @con_mame ああ、やっぱりそうなりますよね。。こっちは息をするくらい当たり前のことだと思っていても向こうは違って、向こうが当たり前に思っていることも俺は知らなくて、あぁ…ってなります。。

    ORDER BY 狙いのキーの話
  • MySQLのLEFT JOIN, RIGHT JOIN, INNER JOINの自分用まとめ - (゚∀゚)o彡 sasata299's blog

    2008年09月03日00:53 MySQL MySQLのLEFT JOIN, RIGHT JOIN, INNER JOINの自分用まとめ MySQL の LEFT JOIN, RIGHT JOIN, INNER JOIN について、ちょっと混乱することが多いので自分用に簡単にまとめてみます。まぁ、タイトルのまんまです(・∀・;) まず、テスト用のテーブル (test1, test2) を用意します。 CREATE TABLE test1 ( test_id VARCHAR(255) PRIMARY KEY, hoge VARCHAR(255) ); CREATE TABLE test2 ( id INT PRIMARY KEY AUTO_INCREMENT, test_id VARCHAR(255) NOT NULL, fuga VARCHAR(255) ); テーブルの中身はこんな感じ

  • MySQLの照合順序とは何ぞや? - AmidaikeBlog

    今回のプロジェクトは萌えるプロジェクトだ。 という訳で、照合順序とは何か前から気になっていたので調べました。 今までは何の意識する事も無くデフォルトで使っていたので。。。 ちなみに何度も書きますがOSはCentOS5.4、MySQLは5.1.40です。 以下のMySQLのURLを参考に抜粋していきましょう。 MySQL :: MySQL 5.6 リファレンスマニュアル :: 10.1.1 一般の文字セットおよび照合順序 照合順序とは、その名の通り照合する順番の事なんですね。 で、国ごとで文字の扱いが異なるから一杯文字キャラクター定義されているという訳ですね。 何だそのまんまで簡単じゃん。 create database hogehoge default character set utf8; というように今回データベースはutf8を使うのでデフォルトだとutf8が使われてます。 SHOW

    MySQLの照合順序とは何ぞや? - AmidaikeBlog
  • 解析まで10分!最強のMySQLチューニングツール「Jet Profiler」 - Lancers開発ブログ

    こんにちは、keiです。 今回は、MySQLのチューニングに大活躍な「Jet Profiler」というツールをご紹介します。 Jet Profilerとは Jet Profilerは、MySQL向けのクエリアナライザです。 クエリチューニングは、DBパフォーマンスチューニングの中でも重要な作業の1つですが、 Jet Profilerを使えば、その作業をGUIで直感的に行うことができます。 フリーウェアの形態で提供されており、機能限定版であれば無料で利用することができます。 購入する場合は、$499となります。 詳細情報、ダウンロードは公式ページからどうぞ。 http://www.jetprofiler.com/ja/ Jet Profilerの魅力 その1 導入のしやすさ 通常のWindowマシンに、普通のアプリケーションをインストールする感覚でインストールが可能です。 イン

  • mysql のメタコマンド『G』

    mysql のメタコマンドに『\G』っていう便利なのがあるのを今日、というかさっき知った。 SQL文の最後に「\G」ってつけると、問い合わせ結果をたてに表示してくれるというもの。 mogilefs> select * from device; +-------+--------+--------+--------+----------+---------+------------+ | devid | hostid | status | weight | mb_total | mb_used | mb_asof | +-------+--------+--------+--------+----------+---------+------------+ | 1 | 1 | alive | 100 | 2015 | 756 | 1158770599 | | 2 | 1 | alive |

  • 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

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • datetime型のカラムから日付データを引っ張ってくる際の高速化 - 適当な日々

    フリーランスでwebの仕事をしながらwebサービスとかを作ったり作らなかったり、成長と挫折の記録・・・かもしれないちょっとMySQLのチューニングをしたらすごく早くなったので、メモメモ。 datetime型のカラムから日付のみをwhere訳にデータを引っ張ってくることはよくあります。 で、レコードが数万行になってくるとけっこう遅くなったりする。 そしてカラムにインデックスを張っても全然速度があがらなかったりします。 これはクエリーがインデックスを使用していないからなんですね。 苦しまぎれにdate型のカラムを作って日付だけを入れるという手法もありますが、ちょっとスマートじゃないです。 datetime型を維持したままで高速化できます。 例えばこういうクエリー [sql ruler="true" lang_name="true"] select * from item wher

  • ガチでDeNAの技術情報が詰まった「Mobageを支える技術」を読んだ - まいんだーのはてなブログ

    先週末くらいに頂いたのに週末読めなかったけど先程だいたい読み終わりました。 実際の発売日は6/13からなので、今すぐアマゾンで予約するか屋に並ぶといいよ! をいただいて感想を書くのは初めてなわけなのでどう書いたらいいやらわかりませんが読んでおもったことを素直に言えばいいのかなと思うのでそのように書きます。 このはここ数年各所で出ているMobageないしDeNAの技術ノウハウ系情報を一堂に集めて全部書いた総集編的な位置づけと考えるとわかりやすいでしょう。 各章「今/明日から使えるテクニック」みたいなものではないケースが多いですが、ひとつのサービスの技術だけでこれほどの情報量が出てくるのは凄いことですね。 yappoさんも書いていますが、書の分量的にはpart2, part3が圧倒的で「インフラの面倒を見ている人やサーバサイドのコードを書いているけど下のレイヤも考えてる人、もしくは考え

    ガチでDeNAの技術情報が詰まった「Mobageを支える技術」を読んだ - まいんだーのはてなブログ
  • 日付ごとの集計 - yokococonの日記

    [MySQL]datetime型のデータから日付別の集計を行う * 2006.04.01 Saturday * 日記 * 04:53 * comments(0) * trackbacks(0) * by kokoromo MySQLで日付時間データ入れておくデータ型、 datetime型はよく使いますよね。 データだけあって、日付別の集計が必要になってくることがありますよね。 普通に考えて集計やろうとするならgroup by使うんですが このdatetime型、group by datetimeとやった場合、 秒あたりの重複数を数えてくれて日にち別の集計は行ってくれません。 そこで、substring関数。 substring(datetime,1,10) as date とやると group by でも使えます。 mysql> select id,board,dat,w,s,dateti

    日付ごとの集計 - yokococonの日記
  • http://www.2ch-search.net/blog/3

  • MySQLのユーザ管理

    MySQL のユーザ管理について解説していきます。誰でも大切なデータにアクセスする事ができてしまっては困るので、きちんとユーザごとに管理しておくようにしましょう。 ■データベースの作成 まず、root でログインし、テーブルを作成しておきます。show databases;でdb1テーブルが作成されたことを確認してください。なお、SQL文の最後には必ず「; 」が必要になります。「; 」は「\g 」でも代用できます。

  • MySQLのDB領域とDBアカウントを作成 - Max OS X LeopardでLAMP環境を構築しよう - Apache, MySQL, PHP, Perlで作る開発環境 - futomi's CGI Cafe

    ここでは、MySQLのrootパスワードの設定、DB領域の作成、そして作成したDBにアクセスするためのDBアカウントを作成します。そして、テスト用のテーブルを一つ作成します。

    arerreee
    arerreee 2012/06/21
    初期設定わかりやすい
  • 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のEXPLAINを徹底解説!!

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

    MySQLのEXPLAINを徹底解説!!
  • MySQLのINDEXとか最適なクエリとか - ORANGE

    MySQLMySQLのチューニングに関して、特にINDEXを貼ったときのSELECT文で躓いたのでメモ。 INDEXとはまず、INDEXを使わないシンプルなSQL文で、クエリに対してMySQLがどのように応答するのだろうか。以下、サンプル。 SELECT * FROM hoge WHERE foo = 'bar'; 上記のようなクエリを実行すると、MySQLはhogeテーブルに格納されている全てのレコードを読み、fooフィールドに文字列barが存在するか確認する。レコードの数が数百数千であれば問題ないのだろうが、数十万件数百万件のレコードが記録されている場合、これでは効率が悪い。この問題を解決するために、INDEXが存在する。まさしく書籍における牽引のように、レコードの格納場所を予め指定しておく便利な機能だ。投げられたクエリに応じて、可能性のある行を素早く選出できるようになる。INDEXを

  • http://www.res-system.com/weblog/item/550

  • MySQLパフォーマンスチューニングのためのインデックスの基礎知識 - 久保清隆のブログ

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

    MySQLパフォーマンスチューニングのためのインデックスの基礎知識 - 久保清隆のブログ
  • MySQL5.5.3-m3のDATETIME型のバグ。あとMySQLの DATETIME型は本当に遅いのか検証してみた - 2010-04-30 - 小野マトペの業務日誌(アニメ制作してない篇)

    バグの話 近々ふぁぼったーDBのInnoDB化を企てているので、それに伴いMySQL5.0.67(Tritonn)から、先日リリースされたばかりのMySQL5.5.3-m3に乗り換えてみた。RC(リリース候補)版ということで、GA版とほぼ変わらない品質と聞いたので、割と軽い気持ちでインストールしたんだけど、いきなりバグにハマった。 バグとは、DATETIME, TIMESTAMP, DATE, TIME型と文字列定数との結合でインデックスが使われない、というもの。 以下のような、date(DATE型)の結合しかしていないクエリでも、dateインデックスが使われず昇順フルテーブルスキャンされ、20秒くらい掛かった。 select date from STATUS force index(date) where date='2010-01-19' limit 10; この現象は、5.5.3,5

    MySQL5.5.3-m3のDATETIME型のバグ。あとMySQLの DATETIME型は本当に遅いのか検証してみた - 2010-04-30 - 小野マトペの業務日誌(アニメ制作してない篇)