3135 件中 1231 - 1240 件を表示
« 前の 10 件 | 次の 10 件 »
オープンソースRDBMSにUPSERT(MERGE)が揃いました。

本エントリは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リファレンスマニュアルのURL

この記事は、2015年「MySQLマニュアルを読む」アドベントカレンダーの2日目です.


 MySQLリファレンスマニュアルのURLの形式について紹介します。
昨日の日記で紹介した ドキュメントホームから、MySQL 5.7 Reference Manual(GA) というリンクを選ぶと、MySQL 5.7 のリファレンスマニュアルのトップページへと遷移します。以下のURLとなります。

[さらに読む]
MySQL Routerはつらくない。何故ならまだ触っていないからだ。

この記事は MySQL Casual Advent Calendar 2015 の1日目です。
MySQL Fabric&Routerつらくない Advent Calendar 2015 の1日目でもあります。

さて…昨年あんなにも MySQL Fabric関連のブログ を書いたのに、少なくとも2015/12/1現在、MySQL Fabricがちっとも流行ってないのは何故だろうとか考えてみました。

  1. Fabric対応コネクターが必要
  2. MySQL 5.6以上かつGTIDが必要
  3. バッキングストア(mysqlfabricデーモンが情報をストアするためのmysqld)を自前で冗長化しないといけない
  4. ググったら 「MySQL …
[さらに読む]
MySQLのリファレンスマニュアルを読もう

この記事は、2015年「MySQLマニュアルを読む」アドベントカレンダーの1日目です.


 MySQLに関しては、膨大な量のドキュメントが公開されています。
一度読み通したいなと思いつつ、最初の方は面白くなかったり(笑)、章立てで見える以上に各章に深さがあって、読んでも読んでもいつ終わるかわからなくてイヤになったりなどして、いつもすぐに読むのをやめてしまいます。


 12月になると、連載っぽく書く行事があるようなので、それに乗っかる形で、ドキュメントをつまみ食いしながら1日1ネタを書いて行けたら良いかなと思い、書き始めてみることにしました。

[さらに読む]
sha256_pluginでMySQLのパスワードを保護する(MySQL Server Blogより)

免責事項

この記事は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 5.7 : レプリケーションフィルターをオンラインで変更する

MySQL 5.7にはたくさんの機能拡張や新機能があります。これについては、別の記事(原文)で以前サマリーを書きました。レプリケーションフィルターをオンラインで追加できるのは、マニュアルにも書かれているようにMySQL 5.7の機能の一つです。この記事では、いくつかの例とともにこの機能を説明し、まとめてみます。

[さらに読む]
MySQL 5.0から5.7へ直接'インプレース'アップグレードする

免責事項

  • この翻訳は MySQL Server Blogの記事をユーザーが翻訳したものであり、Oracle公式の翻訳ではありません。

本文

  • この記事はMySQLのアップグレードに関する2部作の2番目である。1つ目の記事は mysqldumpを使って5.0から5.7に直接アップグレードする で、mysqldumpを利用したアップグレードの挙動について言及している。我々はこれを'ダンプ'アップグレードと呼んでいる。この記事では我々が`インプレース'アップグレードと呼んでいる、バイナリーアップグレードやライブアップグレードとしても知られているやり方について言及する。

[さらに読む]
LIKE句のSQLインジェクション

先日、例外情報のトラッカーを見回していたら、目を引くスロークエリーログを発見しました。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 …
[さらに読む]
MySQL 5.7のmysql_upgradeは本当にDATETIME型を新しいフォーマットに直してくれるけれど

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の変更を反映させられないかの思考実験

なんか作ろうと思っていて、その考えてる過程を整理のためにメモ。取り敢えず目の前にある事案を想定して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. …

[さらに読む]
3135 件中 1231 - 1240 件を表示
« 前の 10 件 | 次の 10 件 »