Hatena::ブログ(Diary)

開発の風景 〜KKZのSE日記〜 RSSフィード

2015-03-11

11gR2からGROUP_CONCAT(複数行をまとめて1列に)が可能に

以前にMySQLのGROUP_CONCAT関数についてのエントリーを書いていたのですが、あれから5年。

1対多の関係を持つ親子テーブルがあった場合、1つの主キーに対して結合結果が複数行になることはよくあると思いますが、
MySQLでは上記の関数を使うことで複数行内の列をひとつの文字列としてまとめることができます。


Oracleでも出来なくはないんですが、かなり面倒なんですよねぇ。

GROUP_CONCAT関数の便利さは異常

Oracleでも11g R2から同様の集計関数 LISTAGGが追加されており、容易に対応が実施できるようになりました。

まず私の目を惹いたのは、LISTAGG(LIST AGGREGATE)です。簡単にいうと、グループ化された行に存在する値を集約し、1つのリストを生成します。

従業員のリストを例にとってみましょう。LISTAGGはCOUNTの機能のように、この表を集約し、すべての文字列を1つの大きな文字列に連結してくれます。

Oracle Database 11g Release 2に関する10の重要なこと
LISTAGG(集約対象の列名, セパレート文字列) WITHIN GROUP (order by 集約対象をソートする順番の列(指定なしの場合はnull))

続きを読む

2014-10-15

日本MySQLユーザー会 2014年10月15日

先日、日本MySQLユーザー会10月に参加してきましたので、そのレポなど。

====================================

セッション1 MySQL Centralで発表された内容

====================================

MySQLの開発人員は買収後も増加している。

昨年も5.5から5.6へのバージョンアップを果たした。

現在、5.7.5(DevelopMent Release)を出している。

一部の機能追加はEnterprise版(商用版)のみ対象となる。

 →監査ログを取るEnterprise Audit機能や

  マルチスレッドのEnterprise Scalabilityなど。

現在でも用途はWebサーバのバックエンドが多い。

事例:Facebook

   Twitter

   Dropbox

   Booking.com

   組込の分野→Ciscoの機器内のDB

   Adobeソフトウェア内のリポジトリDBなど

よく聞かれるが、Oracle Databaseに近づける、という思想はなく、

現在のまま、Webサーバのバックエンドとして活躍していく流れを想定している。

------------------------------------------------------------

What’s New 5.7

------------------------------------------------------------

●5.7の主な改良点

InnoDBトランザクション処理性能、可用性、IO性能向上

・Replication:性能と可用性の工場

fabric

・Optimizer:より詳細なExplain,パーサの改善

GISInnoDBのSpatialインデックスBoost.Geometryとの統合

 ・バージョンが進むにつれ、高負荷時の性能改善が図られている。

  → Sysbenchの結果の向上の図

 ・Linux/UNIX環境でのSyslogサポート

 ・サーバーサイドでのSQLタイムアウトセッション単位でも変更可能。)

 ・GISとの統合

  ・独自コードの置き換え(空間図形情報の計算、分析)

  ・WorkBencheで地図情報を参照可能

 ・Windows環境の強化(MySQL for Excelなど)

 ・コミュニティレポジトリも用意した。GitHubへソースの掲載も実施。

 ・MySQLクラスタの起動時間改善

 ・MySQL Enterprise Edition

  → MySQL Enterprise Encryption

   → MySQL暗号ライブラリ

     (AES256による暗号化、公開暗号鍵による暗号化など)

   → Oracle Enterprise Manager for MySQL

     (OracleのEMからMySQLの監視ができる)

【KKZ感想】

  Syslogサポートは運用面でいいかも。fluentdとかと組み合わせる?

  MySQL for Excelとか逆に闇しか感じないが、

  その領域がMySQLの領域ともなってる気がする。

  Workbenchは6.2でかなりフレンドリーになってるので、

  DB専門じゃない人にも使ってもらいたいツール

  SQL Developerとかよりははるかに軽く、

  PGAdminよりはわかりやすいし見やすい。

  性能や可用性の向上の実感は仕事で使ってみないと何とも。

  実行計画(オプティマイザ)がだんだんマシになってるのは感じる。

●実験版(Labs)での変更点

オプティマイザの新コストモデルにより、ストレージエンジンでの処理を改善

 → より正確で動的なコスト見積もりができるようになる。

   キー参照、テーブル、レンジスキャンなど

・FusionIOを使った場合のストレージIO性能を向上させている。

 (ページレベル圧縮など)

 → InnoDBデータ、システム表領域、UNDOログ

・グループレプリケーション

ネイティブパーティショニング

・32K 64Kページのサポート

・TABLESPACEのサポート

 → 複数テーブルをユーザーが定義した表領域に格納可能とする

・マルチソースレプリケーション

 → 複数のデータ元からレプリケーションする)

スキーマ内マルチスレッドスレーブ

・グループレプリケーション

 → 共有ディスクをつか合わない擬似同期レプリケーション

・各種メタデータデータディクショナリで一元管理する流れを導入する。

HTTPプラグイン for MySQL

 → REST APIから直接SQLを叩いて結果を取得できる

【KKZ感想】

  実験版の中ではネイティブパーティショニングと

  オプティマイザの新コストモデルが面白そう。

  Oracleオプティマイザにもある、動的統計が組み込まれるっぽい?

  HTTPプラグインURLにGETパラメータSQLを渡すと、

  結果をJSONで返してくれる模様。

  ちょっとしたREST API試すだけならサーバアプリ書かなくて

  済むかもしれない。要調査。

  (http://blog.ulf-wendel.de/2014/mysql-5-7-http-plugin-mysql/ …

●性能について

memcachedを使った場合の性能が5.7で改善されている。

 (高負荷時に6倍以上改善)

・秒間接続数による負荷も低下している。

クエリリライトプラグイン(開発中)

JSON形式でoptimizerの実行計画を出せる。

 Workbenchでグラフィカルに参照可能。

・5.6で強化したPERFORMANCE SCHEMAの情報を

 さらに詳細に取れるように機能追加している。

 上記スキーマの情報を整理・管理しやすくするため、

 SYSスキーマを導入。

【KKZ感想】

  地味にWorkbenchでグラフィカルな実行計画見れるのは助かる。

  リリースしてから放置して運用するというより、

  できるだけDBAがきちんと性能もメンテする(拡張していく)のが

  MySQLの使い方な気はするので、INFORMATIONスキーマ

  PERFORMANCEスキーマ、SYSスキーマの導入はありがたくなりそう。

MySQL Fabric 1.5

OpenStackとの統合

  ・クラウド環境での運用効率化

  ・管理情報をOpenStackから取得してくる

・高可用性

・シャーディングによる拡張性

【KKZ感想】

  高可用性とスケーラビリティ、クラウド対応の話。

  現状その規模で触ったことないけど面白そう。

MySQL最新情報セミナー 2014秋にてこれらの詳細を発表する予定

日本オラクルのページで参照)

====================================

セッション2.1 MySQL Central ユーザーレポート

 SCSK株式会社 池田さん

====================================

写真をベースに会場の様子の報告(レポート割愛)

Facebookは30人くらいの運用チームで数万台のサーバーを管理している。

最近、5.6にアップデートを完了した。

その他、Facebook独自の機能拡張を行っており、その発表があった。

関連としてWebscale SQLセッションもあり。

 ※ WebScale SQLは、FacebookGoogleTwitterなどの

   MySQL利用企業によるソースの改造をMySQL側に還元するための

   コラボレーション。スケーラビリティやパフォーマンスの向上が主。

====================================

セッション2.2 MySQL Cluster Casual Talk

====================================

InnoDB on Disk Strage with InnoDB Ruby

 → InnoDBファイルフォーマットをパースするRubyスクリプト

   MySQLっぽい変態セッション

・現在のいろいろな機能改善はInnoDBメインで開発されていってる

 (反面、他のストレージエンジンはお察しください)

Yahooは自前でMySQLのモニタリングシステム組んだらしい。へー。

・大量のMySQLサーバを利用するような運用では、

 MySQLのユーザー管理にユーザー管理にPuppet使ったりしている。

====================================

セッション2.3 MySQL Cluster 7.4.1 DMR

 櫻田さん @tsakurada

 http://www.slideshare.net/mobile/TakeshiSakurada/my-na201410

====================================

MySQLクラスターのデータノードは起動時にメモリに全部読み込むので、

起動時のパフォーマンスが問題となっていた。

すべてがインメモリだと保存性・冗長性がないので、

ファイルに保存を行うローカルチェックポイントを使っている。

このローカルチェックポイントのファイルなどを利用して、

スピーディーに起動をかけるような仕組みか?

・1100万レコード存在するテーブルをmysqldumpで取り出して投入

(E5620 ×2 8GBの環境)

・サンプルテーブルは複合インデックスを含む

・コンカレーションエグゼキューションスレッド4と8で試してみた。

・結果:7.1→7.2では遅くなっている。

 7.3→7.4.1の比較で考えるとCXT=4の場合はいまいちだが、

 CXT=8の時はかなり早くなった。

 7.1の頃と同レベルのスピード。

====================================

セッション2.4

 市井さん @ichii386

====================================

MySQL FabricOpenStackと連携できたらしい

 AWS、RackspaceもOK。

 (Openstackは一部は動くようになっている)

Solaris 11.2がリリースされている(半年前)

 OpenStackが統合され、Solaris固有の仮想化に

 便利機能がDriverとして使えるようになった。

SolarisMySQL Fabric でHAにできるんじゃないか?

 → 実験中。

・ところでMyISAMどこ行ったの?(会場笑い)

 → MyISAM is No Future - Sunny(MySQL開発者の偉い人?)

・仕事ではログ分析とかでMyISAMを使っている。

 InnoDBとはワークロードのかかり方が異なる。

 ・MyISAMのメリット

  ・自分でBuffer管理するよりOSに任せたほうがよくね?

   → innoDBでも性能向上の取り組みは大きな要素。

     今後のバージョンアップでどんどん変わっていく。

   ・ibdのファイルサイズ大きい

  ・トランザクションとか別にいらないシステムもある。

   (ロックとかの)オーバーヘッドがない方がいい。

   → innoDBでもRead Onlyトランザクション使えばよくね?

  ・MRG_MyISAMとかもある

   → パーティショニングとか今後はNativeになっていくよ〜

・結論:MyISAM、ちょっと不安になってきた。

====================================

セッション2.4 InnoDB Adaptive Flushing

 瀬島貴則さん

====================================

Oldest Pageについて

MySQLではバッファプールをページという単位で管理している。

そのページがダーティになった最初のイベントが

oldest_modificationというページの管理領域に書込まれている。

ダーティページをフラッシュしてディスクに同期させると、

そのページのoldest_modificationが0になる。

バッファプール上のページは2種類のリストで管理されている。

 ・flush listは更新された順に管理

 ・LRU listはすべてのページを対象に、参照された順に管理

ログ上に出力されるLast checkpoint atの進み方と

ディスクIOのワークロードは必ずしも同期しない。

Redoログの進み具合を管理するいくつかのパラメータ

 ・innodb_adaptive_flushing_lwm

 ・innodb_io_capacitiy

 ・innodb_io_capacitiy_max

io_capacityは5.5と比較して意味合いが変わったと思う

dirty page のflushはこの値だけで決まってくるわけではない。

InnoDBでマスタースレッドと呼ばれるスレッドはこなすタスクが多かった

(ダーティページのフラッシュ、バッファの変更、パージ

5.6ではそのへんの処理を複数のスレッドに分割した。

5.6からはinnodb_lru_scan_depthで指定されただけ、

フリーページを残すようになった。

Page Cleaner Threadがflush listを見て

dirtypageをフラッシュするときの挙動が5.6から賢くなった。

innodb_adaptive_flushing_lwmを超えない限りは

積極的には書かない(write combiningを狙う)。

transaction logの残量を見て、

1秒間にフラッシュするページの数をコントロールするようになった。

 → SSDに書き込むときにこまめに書きすぎると性能に影響が出るため、

   ある程度まとめて書き込む挙動を狙っている。

 → パラレルフラッシング:ダーティブロックの数が

   進んでいく数とかを見て可能ならまとめて書くように按分する。

   上記のような挙動に加え、

   5.7ではIOスループットが安定するように修正する方針

====================================

セッション3 InnoDB Rubyの紹介

====================================

InnoDBのデータファイルを解析して、

情報を出力するRuby GEMパッケージ。

インストールGEMで一発。

$ gem install innodb_ruby

$innodb_space -s ibdata1 space-page-type-summary

 → テーブルスペースファイルを取得して情報表示するコマンド。

   UNDO_LOGやINDEX領域の使用率などが出力される。

$innodb_space -s ibdata data-dictionary-tables

 → データディクショナリのファイル情報が出力される。

$innodb_space space-page-type-summary

$innodb_space -f d1/t1.ibd space-page-type-regions

$innodb_space page-illustlate

 → ファイルの中身が一覧で色分けして見れる。

   (旧Windowsデフラグみたいな出力。)

$innodb_space index-recurse

 → インデックスの構造が直接見れる。(リーフの状態など)

$innodb_space record-dump

 → レコードの中身を直接見る

====================================

セッション4 MySQL Security(Enterprise Encryption)

    杉山真也 @RDBMS

====================================

・本題に入る前にHTTPプラグインのお試し

  Curlから直接HTTPURISQL文を入れてアクセスして、

  JSONで値が返却される様子のデモ

Enterprise版ではない機能として、共通鍵暗号化の紹介。

 → AES暗号化(AES_ENCRYPT、AES_DECRYPT)

   session.block_encryption_modeで

   AESの暗号化強度を変更可能。

Enterprise版独自機能として非対称暗号がある。

 create_asynmetric_priv_keyファンクションでPrivate鍵の発行

 create_asynmetric_pub_keyファンクションでPulic鍵の発行

 ASYNMETRIC_ENCRYPTファンクションと

 DECRYPTファンクションで非対称で暗号

 より強度の高いRSA1024の暗号化なども可能

2014-07-10

Android Studio 0.8.0のWindows環境での日本語化&その他設定

最近仕事とは全く関係ないですが、ちょこちょことAndroidアプリ作りに挑戦しております。

Eclipse使ったり、IntelliJ IDEA使ったりとあまり落ち着かない感じですが、

今後はGoogleさん的にもAndroid Studioに流れていきそうなので、

今後を考えるとAndroid Studioに慣れておいて損はないかなぁ、と思ってます。

で、思ったより設定に苦戦したのでメモ。

元ネタは以下のサイトです。(こちらはMac OS環境ですが)

IntelliJIDEをある程度日本語化しよう(Android Studio, PhpStorm等)

http://qiita.com/tukiyo3/items/f245744c4c18259016f9


Android Studio 0.8.0のWindows環境での日本語化

0. 前提条件

Android Studioのバージョン: 0.8.0(0.8.2) インストール先: 『C:\android-studio』

Pleiadesのバージョン:1.5.2

OSWindows 7 Professional (64bit)

1. Android Studioフォント変更

『File』 ⇒ 『Settings』 ⇒ 『Appearance』 で外観設定ページを開きます。

『Override default fonts by (not recommended):』のチェックをONにし、

メイリオ』、サイズ『11』を指定します。

f:id:kkz_tech:20140710155807p:image

とりあえずいったんAndroid Studio を終了してしまいましょう。


2. Pleiades.jarダウンロード

Pleiades - Eclipse プラグイン日本語化プラグイン

http://mergedoc.sourceforge.jp/

Eclipse同梱版ではなく、pleiades.jar単体でダウンロードしてください。


3. ダウンロードファイルの展開

ダウンロードしたPleiades.jarファイルを展開します。

すると、以下のようなディレクトリが出来るはずです。

f:id:kkz_tech:20140710155808p:image

上記のフォルダの中から、『plugins』配下の『jp.sourceforge.mergedoc.pleiades』フォルダを

『C:\android-studio\plugins』にコピーします。

f:id:kkz_tech:20140710155809p:image

なお、Android Studioデフォルトインストール先は『C:\Program Files(x86)』となっていますが、このフォルダ名だとAndroid Studio起動時にPleiades側でエラーになってしまうため、例のようにルート直下に配置した方が良いかと思います。


4. Android Studio起動時VMオプションの書換

Android Studioの起動VMオプションEclipseと異なり、

『studio.exe.vmoptions』『studio64.exe.vmoptions』となります。

インストールしたOSが32bit系の場合は『studio.exe.vmoptions』、

64bit系の場合は『studio64.exe.vmoptions』の末尾に以下の文言を追加します。

-javaagent:../plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

5. Android Studioの起動

これでAndroid Studioの一部のメニューが日本語化されているはずです。

(Eclipseに同名のメニューがある場合は日本語化され、そうでない時は英語のまま)

体感3〜4割くらいの日本語化ってところですかね?

f:id:kkz_tech:20140710155806p:image

で、ようやっと日本語化はできたんですが、やっぱり所々おかしな挙動をする事も多く、

ぶっちゃけある程度慣れたら外してしまった方が良さそうな感触(´・ω・`)


その他Android Studioのいろいろな設定

SDKの設定

デフォルトでは、Android Studioのフォルダ配下にAndroid SDKが追加されますが、いろいろAPIバージョンに合わせたファイルを重複で入れていると2GBとか無駄な容量を食ってしまうため、出来れば統一したいところ。

『Platform Settings(プロジェクト構造)』 → 『Android SDK』の『SDK Location』からAndroid SDKのフォルダを別に指定します。

JDKの設定もこちらから出来るのでお好みに合わせてどうぞ。


コードフォーマッタの設定

Eclipseといろいろと異なる部分はあるのですが、Android Studioはコードフォーマッタの設定もかなり充実してます。かなり好みや文化に依るところは多そうですが、以下の記事を読んでおけばとりあえず困る事はなさそう。

Android Studio最速入門〜効率的にコーディングするための使い方

コードフォーマッタの設定

http://gihyo.jp/dev/serial/01/android_studio/0041

[Android Studio] 快適にコーディングできるように設定をカスタマイズしてみた

http://dev.classmethod.jp/smartphone/android/android-studio-customize-settings/

2014-04-16

2015/4/15 OSSユーザーのための勉強会 #6 PostgreSQL と MySQL

に参加してきたのでざっくりメモ。

--------------------------------------------------------------------------------

MySQLの優位性 SCSK 池田徹朗

--------------------------------------------------------------------------------

SCSKでは2003年からMySQLを推進している。

Q1.ユーザ企業かITベンダ企業か

→A.会場内3割くらいはA。

Q2.どんな使い方か?

 自社システム選定→10名位?

 お客さまに製品提案販売→数名

 構築・開発→半分くらい?

 保守・運用→ぼちぼち

 →参加者の幅が広い事の確認

PostgreSQLMySQLのどちらを採用すべきか?

 →全ての人にMySQLをお勧めする。

-----------------------------------------------------------------------------------

10の理由ネタ

-----------------------------------------------------------------------------------

ソースコードの公開

 →ソース公開されているとgdbによる動的解析が出来るようになる。

  (トランザクションログのfsyncを引っ掛けるなど)

 →DB起動処理の関数コールグラフを出す、など。

 →調査研究フェーズではドキュメントに無いことも把握できる。内部構造の解析もできる。

 →システム開発フェーズでは実装が気に入らない場所が治せる。不足部分も追加できる。

 →システム運用フェーズでは、バグの厳密な調査や修正パッチの提案が出来る。

 →SCSKによるMySQL拡張事例

   日本語全文検索

   audit_pluginインターフェースによる監査ログ出力(今は本体機能として実装済み)

   CP932文字コード対応。Ruby対応(MySQL/RubyRuby/MySQL)

   CPUスケーラビリティの改善。

-----------------------------------------------------------------------------------

・低コスト

-----------------------------------------------------------------------------------

 →TCOの差が大きい。

  Airline Analogy 「座席のクラスに寄って乗りごこちは異なるが時間は同じ」

 →インストールの容易さやチューニングのわかりやすさ。

 →運用現場でも保守や解析で試験環境を作るのが容易で楽。

  起案して稟議して資産管理して・・・エンジニアにはやりたくない仕事だらけ。

-----------------------------------------------------------------------------------

・製品レベルの進化

-----------------------------------------------------------------------------------

 →バージョンアップが早い。機能追加が多い。

 →ソフトウェアにおける破壊的イノベーション

  時間とともに要求性能が上がってくる。

  商用ソフトはハイエンドで求められる性能を上回るスピードで性能拡充されていくが、

  OSS DBも遅れて追いついていき、ローエンドなどに適用できるチャンスが広がっている。


-----------------------------------------------------------------------------------

信頼性/安定性

-----------------------------------------------------------------------------------

 →mysqldが落ちるケースはあまりない。(HW障害等を除けば)

  実運用でmysqldが落ちた例:

   CPUキャッシュ制御の不具合によるメモリエラー。

   32bit時代にメモリ空間不足。

   HAソフト誤検知による強制停止。

 →高信頼性のための機能。

  ・innoDB Drouble Write

  ・innoDB Read ThreadによるDiskからのPage読込時の破損チェック

  ・関数呼出時のAssertionによるメモリエラー検知。

   (関数起動時にパラメータチェックなどをしている)

 →信頼性に対する懸念。

  (OSSだとOSの問題はあまり対策としてDB機能には追加しない考え方が多い?)

 →MySQL Cluster

 →MySQLの単体性能の高さ。バージョンの進化とともに性能も上がっている。

 →MySQLレプリケーション機能。OracleのStandbyデータベースのようなもの。

  これを利用して参照系負荷分散構成を組んだりする。(Facebookなど)

  1秒あたり1120万行の更新。

  1秒あたり6060万回のSELECT。

  1秒あたり25億行の読み込み。

  1秒あたり2420万回のDisk IO。

-----------------------------------------------------------------------------------

・豊富な製品群

-----------------------------------------------------------------------------------

 →PerconaやAmazon RDS for MySQL

 →MySQL Enterprise Monitor、Query Analyzer

 →MySQL Enterprise backup(オンラインバックアップ

 →MySQL Utilities(各種スクリプト群、レプリケーションや自動フェールオーバーなど)

-----------------------------------------------------------------------------------

MySQLの組み込み

-----------------------------------------------------------------------------------

 →デフォルトで対応してる製品が多い。

  Adove Creative Suite、ガルーンやCloudstack、RedmineMovable Typeなど。

 →大規模だとFacebook,Twitter,Paypal,LinkedIn,mixi

 →企業では新生銀行(CRM)、

  楽天証券(オンライントレード)、

  NTTコムウェア(コンビニ収納代行)など

  政府系ではインドの国民総背番号制度のシステム、海軍のシステムなど。

-----------------------------------------------------------------------------------

・人気

-----------------------------------------------------------------------------------

 →DB Enginesサイトでの人気ではOracleに次ぐ2位。

  PostgreSQLSQLServerに次ぐ4位。

 →国内シェア(IPA調査 2009年)はPostgreSQLよりも高い。

-----------------------------------------------------------------------------------

・エコシステム

-----------------------------------------------------------------------------------

 →批判や懸念もあったが、Oracleを中心としたエコシステムができている。

  Oracleの販売パートナーは2万社あるため、販路の拡大が大きい。

  1000人近い開発者がいるという噂。昔は50人程度だった。

 →離脱した人もPerconaやMaria、SkySQLなどいろんな製品を出している。

================================================================================

PostgreSQLの優位性 アシスト 喜田 紘介

================================================================================

・直前のセッションを受けて

 →MySQLの人気が高いです、という話ですが、

  インストール数は(MySQLの構成上)台数が多くなりやすいから、そのせいもあるのでは。

 →監査ログの機能はPostgreSQLはちょっと確かに弱い。

・クイズ「早いのはどれ」

 ・1億件のデータ更新→PostgreSQLOracleMySQL

 ・1億件の集計処理→OraclePostgreSQLMySQL

 ・1億件のランダム一意検索→MySQLOracle=PostgreSQL

  Oracle 高い可用性、更新負荷分散、自動管理機能

  PostgreSQL 質実剛健、 複雑なSQL、多彩な機能拡張

  MySQL 軽量・高速、参照負荷分散、Webアプリケーション

-----------------------------------------------------------------------------------

PostgreSQLDBMSとしての作り

-----------------------------------------------------------------------------------

  PostgreSQLは行単位ロック。エスカレーションのない行ロック。

  読み取り一貫性は追記型なのでサポートしやすい。

  (新しく追加された行は追記し、

   過去のデータを見てるトランザクションは前のレコードの物理配置を見ればよい)

  表スキャンの種類

   Seq Scan、Index Scan、Bitmap Scan

  結合の種類

   ネステッドループ結合、ソート・マージ結合、ハッシュ結合

  特殊なデータの扱い

   GISシステム。地理情報システムといえばPostgreSQL+PostGIS

  他のデータとの連携。

   Foreign Data Wrapper。postgres_fdw、file_fdw, Oracle_fdw

-----------------------------------------------------------------------------------

PostgreSQL都市伝説を追う

-----------------------------------------------------------------------------------

 →レプリケーション機能が毎バージョンごとに強化されていっている。

  正副の入替え。

 →追記型のデメリットは8.xで改修された。

  自動VACUUMやHOT、Visibility Map/Free Space Map、VACUUM FULLの仕様変更など。

  悪名高きテーブルロックのVACUUM FULLは既に改善済。

 →追記型の弱点である索引の更新が必要になる点はHOTで対処。

 →パーティショニング機能、レプリケーションによる参照負荷分散機能、Materialized View(9.3〜)

 →パラレルクエリは開発中。

 →pgAdmin3、PostgreSQL Studio(Webベース)

  監視ツール pg_monz

  自動メンテナンス系のツールは開発中。

-----------------------------------------------------------------------------------

・イマドキ構成の紹介

-----------------------------------------------------------------------------------

 →シングル構成でもCPU性能が高い。DiskもRAMも潤沢に積んでいることが多い。

  CPU 2CPU/8Core、RAM32GB、Disk2TBなど。

 →HA構成ではPacemakerによるHA構成や、共有ディスクとクラスタウェアを用いたHA構成など。

 →クラウド基盤に配置する。CPU課金のないOSSならではの構成。

 →レプリケーション構成。pgPool II for Pacemaker。

  参照処理はスタンバイ側に振る、ということも可能。

================================================================================

質疑応答

================================================================================

 Q. MySQLでのOracleストアドプロシージャの移行てどうやるの?

 →A. MySQLではV5.0でストアドを実装しているが、

    OracleではなくDB2を意識したフォーマット。

    正直、あまり得意でない分野。

 →A. PostgreSQLはFunctionしかないので、基本書き直しになる。

    逆にOracle側にプロシージャを持っていく、

    という話なら12cからそういうツールが追加されたという噂。

 Q. PostgreSQLのVACUUMは、現在では完全に手動は不要になったのか?

 →完全に0ではない。

  バッチなどで大量のデータを更新した後など、

  VACUUM対象になっていても、

  実際にAUTO VACUUMが行われるまで時間がかかることがある。

  また、設定で指定したVACUUMのワーカープロセスの起動数が少ないと、

  いつまでたっても順番が回ってこない事がある。

  ちゃんとVACUUM完了したかなどを運用で監視すること。

2014-03-18

黒魔術Byteman使ってみた

過去のエントリでも紹介したBytemanを実際に触ってみたのでとりまとめ。

参考サイト

公式:https://www.jboss.org/byteman

ダウンロードhttps://www.jboss.org/byteman/downloads

バイトコード操作ツール、Bytemanを試す:http://d.hatena.ne.jp/Kazuhira/20131022/1382455739

Bytemanクイックリファレンス:http://d.hatena.ne.jp/nekop/20111226

この辺を読めば使い方はおおよそわかってくると思うので、実際のコードに入れてく使い方をつらつらと書いていきたいと思います。

続きを読む