本エントリはFirebird Advent Calendar 2015の二日目です。
オープンソースRDBMS御三家(Firebird, MySQL,
PostgreSQL)の中では、唯一FirebirdがSQL標準のMERGE文に対応していました。
MySQLではINSERT IGNOREにて、マッチしたときに、なにもしない(IGNORE = DO
NOTHING)、
INSERT … ON DUPLICATE KEY UPDATEにて、マッチしたときに、更新(DO
UPDATE)することにより、
MERGE文相当の処理ができていました。
PostgreSQLでは手軽に行えるUPSERTの機能はなかったのですが、今回MySQLのINSERT … ON
DUPLICATE KEY UPDATEに
似た独自構文にて、9.5で対応することになりました。マッチしたときに差分表(m_shain)で更新するには、次のような例になります。
INSERT INTO shain(id, name) select id, name FROM m_shain ON
CONFLICT ON CONSTRAINT 制約名 DO UPDATE …
この記事は MySQL Casual Advent Calendar
2015 の1日目です。
MySQL Fabric&Routerつらくない Advent Calendar
2015 の1日目でもあります。
さて…昨年あんなにも MySQL Fabric関連のブログ を書いたのに、少なくとも2015/12/1現在、MySQL
Fabricがちっとも流行ってないのは何故だろうとか考えてみました。
- Fabric対応コネクターが必要
- MySQL 5.6以上かつGTIDが必要
- バッキングストア(mysqlfabricデーモンが情報をストアするためのmysqld)を自前で冗長化しないといけない
- ググったら 「MySQL …
この記事は、2015年「MySQLマニュアルを読む」アドベントカレンダーの1日目です.
MySQLに関しては、膨大な量のドキュメントが公開されています。
一度読み通したいなと思いつつ、最初の方は面白くなかったり(笑)、章立てで見える以上に各章に深さがあって、読んでも読んでもいつ終わるかわからなくてイヤになったりなどして、いつもすぐに読むのをやめてしまいます。
12月になると、連載っぽく書く行事があるようなので、それに乗っかる形で、ドキュメントをつまみ食いしながら1日1ネタを書いて行けたら良いかなと思い、書き始めてみることにしました。
…
免責事項
この記事はTodd Farmer氏によるMySQL Server Blogの記事「Protecting MySQL Passwords With the sha256_password Plugin」(2015/9/16)をユーザが翻訳したものであり、Oracle公式の文書ではありません。
長年にわたって、MySQLはパスワードの保存およびネットワーク通信の両者をセキュアにするのに3種類の方法を使ってきました。このブログ投稿では様々な方法の簡単な歴史をご紹介し、MySQLサーバー5.6で導入されたsha256_passwordを使うように移行すべき理由について焦点をあてます。
初期のパスワード(old password)
現在では …
[さらに読む]免責事項
- この翻訳は MySQL Server Blogの記事をユーザーが翻訳したものであり、Oracle公式の翻訳ではありません。
本文
-
この記事はMySQLのアップグレードに関する2部作の2番目である。1つ目の記事は mysqldumpを使って5.0から5.7に直接アップグレードする で、
mysqldumpを利用したアップグレードの挙動について言及している。我々はこれを'ダンプ'アップグレードと呼んでいる。この記事では我々が`インプレース'アップグレードと呼んでいる、バイナリーアップグレードやライブアップグレードとしても知られているやり方について言及する。 -
…
先日、例外情報のトラッカーを見回していたら、目を引くスロークエリーログを発見しました。SELECT ... WHERE
...
LIKEといったクエリーのLIKE句にたくさんのパーセントが付いているのです。この部分はユーザが入力した部分なのは明らかで、最初私はSQLインジェクションを疑いました。
[3.92 sec] SELECT ... WHERE (profiles.email LIKE '%64%68%6f%6d%65%73@%67%6d%61%69%6c.%63%6f%6d%') LIMIT 10
コードを見てみると、ここで解釈されるメタ文字(%や_や\)のチェックをまったくせずにユーザが指定した文字列をLIKE句に直接使っていることがわかりました。
def self.search(term, options = {})
limit = (options[:limit] || 30).to_i
friends = options[:friends] || []
with_orgs = options[:with_orgs].nil? ? false : options[:with_orgs]
if …[さらに読む]
Upgrading Directly from MySQL 5.0 to 5.7 using an
‘In Place’ Upgrade | MySQL Server
Blog を読んでふと思い立ったので。
MySQL 5.7のmysql_upgradeは古いDATETIME, TIME, TIMESTAMPを新しいDATETIME2,
TIME2, TIMESTAMP2に変換してくれるからmysqldumpしてからリストアしなくてもいいんだぜ!
っていうのが趣旨らしい。それは素敵だ。
↓これの12番目
日々の覚書: あなたのMySQL 5.6トレンド力をチェックする15の質問
ざっと見、確かにやってくれてる。worldデータベースを ダウンロード …
なんか作ろうと思っていて、その考えてる過程を整理のためにメモ。取り敢えず目の前にある事案を想定してtomcat,
long_query_timeだけど、コネクション永続化しててセッション変数が実効パラメーターなグローバル変数の変更は全部一緒。
どうでもいいですがマークダウンがただのテキストとして書かれてるのは仕様です(このあと社内のドキュメントにコピううんなんでもない)
## 前提
1. `SET GLOBAL long_query_time=
n`は@@grobal.long_query_timeの値を書き換える
2. 各スレッドの実効パラメーターは @@session.long_query_time
であり、 @@global.long_query_time は
@@session.long_query_timeのデフォルト値である
3. よって、既に作成されてしまったスレッド= コネクションに対しては影響を持たない
4. …