SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
<Insert Picture Here>




MySQL 日本語利用徹底入門

日本オラクル株式会社 MySQL Global Business Unit
テクニカルアナリスト 奥野幹也
2012 年 5 月 29 日
                Copyright© 2012, Oracle. All rights reserved.
2




    以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。ま
    た、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはでき
    ません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確
    約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オ
    ラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊
    社の裁量により決定されます。




    Oracle と Java は、 Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
    文中の社名、商品名等は各社の商標または登録商標である場合があります。




                    Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>




文字コードとは




             Copyright© 2012, Oracle. All rights reserved.
文字コードは文字を符号化したもの。
●   ASCII
    ●   7ビットで表現可能なラテン文字を中心とした文字コード
    ●   a ---> 0x61, b ---> 0x62, c ---> 0x63
●   JIS X 208
    ●   Shift_JIS … 日本 ---> 0x93FA967B
    ●   EUC-JP … 日本 ---> 0xC6FCCBDC
    ●   UTF-8 … 日本 ---> 0xE697A5E69CAC




     符号化の方式にはいくつか種類がある


                Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>




MySQL と文字コード




            Copyright© 2012, Oracle. All rights reserved.
MySQL の文字コードは結構複雑?


    MySQL の文字コードの実装は
           とても柔軟




   柔軟さが増せば複雑さも増す・・・




    Copyright© 2012, Oracle. All rights reserved.
MySQL で利用可能な日本語対応文字コード

文字コード名    対応文字                                            ストレージサイズ

sjis      JIS X 0208:1997                                 1 〜 2 バイト

cp932     JIS X 0208:1997 + NEC 特殊文字                      1 〜 2 バイト
          ・ IBM 拡張文字
ujis      JIS X 0208:1997                                 1 〜 3 バイト

eucjpms   JIS X 0208:1997 + NEC 特殊文字                      1 〜 3 バイト
          ・ IBM 拡張文字
utf8      JIS X 0208:1997 + NEC 特殊文字                      1 〜 3 バイト
          ・ IBM 拡張文字
utf8mb4   JIS X 0213:2004                                 1 〜 4 バイト




          Copyright© 2012, Oracle. All rights reserved.
照合順序
文字の並び順を定義したもの。
mysql> set names utf8 collate utf8_general_ci;
Query OK, 0 rows affected (0.00 sec)

mysql> select 'abc' = 'ABC';
+---------------+
| 'abc' = 'ABC' |
+---------------+
|             1 |
+---------------+
1 row in set (0.00 sec)

mysql> set names utf8 collate utf8_bin;
Query OK, 0 rows affected (0.00 sec)
                                                          ソートや比較の
mysql> select 'abc' = 'ABC';
                                                           結果に影響
+---------------+
| 'abc' = 'ABC' |
+---------------+
|             0 |
+---------------+
1 row in set (0.00 sec)




                   Copyright© 2012, Oracle. All rights reserved.
MySQL で使用可能な照合順序
mysql> show collation;
+--------------------------+----------+-----+---------+----------+---------+
| Collation                | Charset | Id | Default | Compiled | Sortlen |
+--------------------------+----------+-----+---------+----------+---------+
| big5_chinese_ci          | big5     |   1 | Yes     | Yes      |       1 |
| big5_bin                 | big5     | 84 |          | Yes      |       1 |
| dec8_swedish_ci          | dec8     |   3 | Yes     | Yes      |       1 |
| dec8_bin                 | dec8     | 69 |          | Yes      |       1 |

                                         :
                                         :

| eucjpms_japanese_ci      | eucjpms | 97 | Yes       | Yes      |       1 |
| eucjpms_bin              | eucjpms | 98 |           | Yes      |       1 |
+--------------------------+----------+-----+---------+----------+---------+
197 rows in set (0.01 sec)




   照合順序は文字コードにマッチしている必要がある


                    Copyright© 2012, Oracle. All rights reserved.
文字コードはセッションごとに異なるかも。



                                                    UTF-8



              セッション 1                                       クライアント 1




              セッション 2                                       クライアント 2


                                              Shift_JIS
    MySQL サーバー




    Copyright© 2012, Oracle. All rights reserved.
文字コードはテーブルごとに異なるかも。


           Shift_JIS



                                テーブル
                                                       UTF-8




  EUC_JP
                 テーブル                          テーブル


                          MySQL サーバー



       Copyright© 2012, Oracle. All rights reserved.
文字コードはカラムごとに異なるかも。



                                                       UTF-8
                                  カラム 1
   Shift_JIS

                                  カラム 2

                                  カラム 3
                                                        binary

                                 テーブル


                          MySQL サーバー



       Copyright© 2012, Oracle. All rights reserved.
MySQL サーバー内の文字コード変換

           ④ データを                  ② クエリの実行
           蓄える際の                     に利用する                     ① 送信する
           文字コード                     文字コード                    SQL 文に対する
⑤ テーブル名や                                                        文字コード
カラム名に対する
  文字コード


                                    セッション                            クライアント
           テーブル


                MySQL サーバー
                                                       ③ クエリの
                                                      実行結果に対する
   ⑥ ファイル名を                                             文字コード
    解決する際の
     文字コード
                ファイルシステム                         出展:エキスパートのための MySQL
                                                 [運用+管理]トラブルシューティングガイド


              Copyright© 2012, Oracle. All rights reserved.
文字コードを確認する
●   SHOW [GLOBAL] VARIABLES LIKE 'char%';
    (1)character_set_client
    (2)character_set_connection
    (3)character_set_results
    (4)character_set_server/character_set_database
    (5)character_set_system
    (6)character_set_filesystem




               Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>




テーブルの文字コード




            Copyright© 2012, Oracle. All rights reserved.
テーブルの文字コード(1)
●   カラムごとに文字コードを指定可能

CREATE TABLE t (
   a VARCHAR(100) CHARACTER SET cp932,
   b VARCHAR(100) CHARACTER SET eucjpms,
   c VARCHAR(100) CHARACTER SET utf8,
       :
);



                    超柔軟
            Copyright© 2012, Oracle. All rights reserved.
テーブルの文字コード (2)
CREATE TABLE t (
  a VARCHAR(100) CHARACTER SET cp932,
  b VARCHAR(100) CHARACTER SET eucjpms,
  c VARCHAR(100),
      :
) CHARACTER SET utf8;




   指定がない場合にはテーブルのデフォルト文字コードに



           Copyright© 2012, Oracle. All rights reserved.
テーブルの文字コード (3)
CREATE TABLE t (
   a VARCHAR(100) CHARACTER SET cp932,
   b VARCHAR(100) CHARACTER SET eucjpms,
   c VARCHAR(100),
       :
);




テーブルの文字コードの指定がない場合には・・・
● データベースの文字コードがテーブルのデフォルト文字コードに

● テーブルのデフォルト文字コードがカラムの文字コードに




            Copyright© 2012, Oracle. All rights reserved.
データベースの文字コード
CREATE DATABASE d1 CHARACTER SET utf8;
CREATE DATABASE d2;




       指定がない場合には character_set_server に

       SET GLOBAL character_set_server = utf8


           Copyright© 2012, Oracle. All rights reserved.
文字コードのデフォルト値

                 characer_set_server



            データベースの文字コード
           ( character_set_database )



         テーブルのデフォルト文字コード


                                                    優先度が
                    カラムの文字コード                       最も高い




    Copyright© 2012, Oracle. All rights reserved.
照合順序の設定方法
CREATE TABLE t (
   a VARCHAR(100) CHARACTER SET utf8
   COLLATE utf8_bin,
       :
);

CREATE DATABASE d CHARACTER SET utf8
  COLLATE utf8_bin;

SET GLOBAL collation_server = utf8_bin;




           Copyright© 2012, Oracle. All rights reserved.
テーブルの文字コードの確認方法 (1)
mysql> show create table CityG
*************************** 1. row ***************************
       Table: City
Create Table: CREATE TABLE `City` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Name` char(35) NOT NULL DEFAULT '',
  `CountryCode` char(3) NOT NULL DEFAULT '',
  `District` char(20) NOT NULL DEFAULT '',
  `Population` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)




               Copyright© 2012, Oracle. All rights reserved.
テーブルの文字コードの確認方法 (2)
mysql> show full fields in CityG
*************************** 1. row ***************************
                                                     中略
*************************** 2. row ***************************
     Field: Name
      Type: char(35)
 Collation: latin1_swedish_ci
      Null: NO
       Key:
   Default:
     Extra:
Privileges: select,insert,update,references
   Comment:
*************************** 3. row ***************************
                              :




              Copyright© 2012, Oracle. All rights reserved.
テーブルの文字コードの確認方法 (3)
mysql> select table_name, column_name, collation_name from
information_schema.columns where collation_name is not null and
table_schema='world';
+-----------------+----------------+-------------------+
| table_name      | column_name    | collation_name    |
+-----------------+----------------+-------------------+
| City            | Name           | latin1_swedish_ci |
| City            | CountryCode    | latin1_swedish_ci |
| City            | District       | latin1_swedish_ci |
| Country         | Code           | latin1_swedish_ci |
| Country         | Name           | latin1_swedish_ci |
| Country         | Continent      | latin1_swedish_ci |
| Country         | Region         | latin1_swedish_ci |
| Country         | LocalName      | latin1_swedish_ci |
| Country         | GovernmentForm | latin1_swedish_ci |
| Country         | HeadOfState    | latin1_swedish_ci |
| Country         | Code2          | latin1_swedish_ci |
| CountryLanguage | CountryCode    | latin1_swedish_ci |
| CountryLanguage | Language       | latin1_swedish_ci |
| CountryLanguage | IsOfficial     | latin1_swedish_ci |
+-----------------+----------------+-------------------+
14 rows in set (0.01 sec)




                  Copyright© 2012, Oracle. All rights reserved.
テーブルの文字コードの確認方法 (4)
mysql> select table_schema, table_name, column_name,
collation_name from information_schema.columns where
collation_name not like 'latin%' and table_schema not
in ('mysql', 'information_schema',
'performance_schema');
Empty set (0.00 sec)




             Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>




オプション




            Copyright© 2012, Oracle. All rights reserved.
文字コード関係のオプション
●   character_set_server … データベースの文字コードのデ
    フォルトになる
●   character_set_database … データベースの文字コード。
    テーブルの文字コードのデフォルトになる。 CREATE
    DATABASE 実行時に指定したものと同じ。
●   character_set_connection … クライアントごとに設定可
    能な文字コード。 SQL の評価時に適用される。
●   character_set_client … クライアントから送信される文字
    データの文字コード。
●   character_set_results … クライアントへ送信される結果
    に含まれる文字データの文字コード。
●   character_set_system … テーブル名などの文字コード。
    常に utf8 。
●   character_set_filesystem … ファイルシステムへアクセ
    スする際に用いられる文字コード。



           Copyright© 2012, Oracle. All rights reserved.
照合順序関係のオプション
●   collation_server … データベースの照合順序のデ
    フォルトになる。
●   collation_database … データベースの照合順序。
    テーブルの照合順序のデフォルトになる。 CREATE
    DATABASE 実行時に指定したものと同じ。
●   collation_connection … クライアントごとに設定可
    能な照合順序。 SQL の評価時に適用される。




          Copyright© 2012, Oracle. All rights reserved.
skip_character_set_client_handshake
●   クライアントが指定した文字コードを無視してサー
    バーが指定した文字コードを使用
●   C API や PHP 利用時に便利
    ●   Connector/J では効かないので注意




             Copyright© 2012, Oracle. All rights reserved.
default_character_set
●   古いオプションなのでサーバーでは利用しないよう
    ●   MySQL 5.5 で廃止
●   クライアントでは現在も利用中




             Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>




ドライバ




             Copyright© 2012, Oracle. All rights reserved.
C API
mysql = mysql_init(NULL);
if (!mysql_real_connect(mysql, NULL, "user",
                        "password", "db", 3306,
                        NULL, 0))
{
    printf("Cannot connect: %s", mysql_error(mysql));
    goto err;
};
if (mysql_set_character_set(mysql, "utf8"))
    goto err;




             Copyright© 2012, Oracle. All rights reserved.
PHP
●   モジュールごとに指定法が異なる
    ●   MySQL 拡張モジュール( mysql ) … mysql_set_charset() ま
        たは SET NAMES
    ●   MySQL 改良型拡張モジュール( mysqli ) …
        mysqli_set_charset() または mysqli::set_charset() または
        SET NAMES
    ●   PDO … SET NAMES
<?php
$dbh = mysql_connect('hostname:3306', 'user', 'password');
if (!$dbh) {
    die('Failed to connect MySQL Server: ' . mysql_error());
}
if(!mysql_set_charset('utf8', $dbh)) {
    die('Failed to change charset.');
}




                Copyright© 2012, Oracle. All rights reserved.
Perl
●   mysql_enable_utf8 属性を指定して、 UTF-8 フラグ
    が有効な文字列を使う。
●   mysql_enable_utf8 属性を指定せず、 MySQL
    Server から受け取った文字列を decode() 、 MySQL
    Server へ渡す文字列を encode() する。


my $dbh = DBI->connect(
    "DBI:mysql:database=db_name;host=hostname",
    "user", "password",
    { RaiseError => 1, mysql_enable_utf8=>1 });




           Copyright© 2012, Oracle. All rights reserved.
Java ( Connector/J )
●   文字コードは characterEncoding プロパティで指定
    ●   指定がない場合には接続先の character_set_server により決
        定。接続後 SET NAMES をドライバが実行。
    ●   --skip-character-set-client-handshake は効かない
●   characterEncoding が何であれ Java の文字列は
    ucs2 に変換される。
Class.forName("com.mysql.jdbc.Driver");
Properties props = new Properties();
props.setProperty("user", "mikiya");
props.setProperty("password", "mikiya's password");
props.setProperty("characterEncoding", "UTF-8");
conn = DriverManager.getConnection(url, props);




               Copyright© 2012, Oracle. All rights reserved.
Ruby
#!/usr/bin/ruby -Ks
  :
my = Mysql.init()
my.options(Mysql::SET_CHARSET_NAME, 'cp932')
my.real_connect('127.0.0.1', 'user',
'password', 'db')
res = my.query('SELECT some_str_col FROM
some_tbl WHERE...');
res.each do |row|
  puts row[0] # シフト JIS ( Cp932 )で出力されま
す。
  :
end



          Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>




文字コード関係の
トラブル




             Copyright© 2012, Oracle. All rights reserved.
文字化けの原因と対策
●   実際のデータと文字コードが一致していないと化け
    る。
    ●   接続用の文字コードは問題ないか?
        – アプリケーションが期待している文字コードとドライバの文
          字コードは同じか?
    ●   端末の文字コードは問題ないか?
    ●   テーブル内のデータは問題ないか?




            Copyright© 2012, Oracle. All rights reserved.
LOAD DATA INFILE/SELECT … INTO OUTFILE
●   LOAD DATA INFILE
    ●   ファイルの文字コードが character_set_database になってい
        ることを期待している
    ●   SET character_set_database = charset_name
    ●   テーブルの文字コードと同じ場合には binary を指定する
    ●   mysqlimport を使う
●   SELECT … INTO OUTFILE
    ●   デフォルトでは文字コード変換しない
         –   LOAD DATA で読むときは binary を指定すると良い
    ●   SELECT … INTO OUTOFILE 'file_name' CHARACTER SET
        charset_name ...




               Copyright© 2012, Oracle. All rights reserved.
latin1 で格納されている?
●   セッションの文字コードもテーブルの文字コードも
    latin1 の場合、文字コードの変換が起きないので、
    文字化けも起きない。
●   照合順序が狂ってしまう (latin1_swedish_ci を用い
    て 1 バイトずつ比較されてしまう )
●   本来の文字コードを指定して接続すると , 文字化け
    してしまう




          Copyright© 2012, Oracle. All rights reserved.
latin1 で格納されている?(つづき)
mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec)

mysql> create table t (a char(30) character set latin1);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t values(' これはテストです。 ');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t;
+-----------------------------+
| a                           |
+-----------------------------+
| これはテストです。                    |
+-----------------------------+
1 row in set (0.00 sec)


              Copyright© 2012, Oracle. All rights reserved.
5C 問題
Shift_JIS の2バイト目が 0x5C (¥)であることに起
因する問題。リテラルとして解釈すると 0x5C がエス
ケープ文字として扱われてしまう。

mysql> set names sjis;                    mysql> set names latin1;
Query OK, 0 rows                          Query OK, 0 rows
affected (0.00 sec)                       affected (0.00 sec)

mysql> select ' 表 abc';                   mysql> select ' 表 abc';
+-------+                                 +------+
| 表 abc |                                 | 病 bc |
+-------+                                 +------+
| 表 abc |                                 | 病 bc |
+-------+                                 +------+
1 row in set (0.00 sec)                   1 row in set (0.00 sec)


            Copyright© 2012, Oracle. All rights reserved.
ラウンドトリップ変換
mysql> create table t (a char(1) character set eucjpms);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t values(unhex('8FA2B7'));
Query OK, 1 row affected (0.01 sec)
mysql> select hex(a) from t;
+--------+
| hex(a) |
+--------+
| 8FA2B7 |
+--------+
1 row in set (0.00 sec)
mysql> select hex(convert(convert(a using cp932) using eucjpms)) from t;
+----------------------------------------------------+
| hex(convert(convert(a using cp932) using eucjpms)) |
+----------------------------------------------------+
| A1C1                                               |
+----------------------------------------------------+
1 row in set (0.00 sec)




                 Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>




まとめ




            Copyright© 2012, Oracle. All rights reserved.
まとめ
●   MySQL で利用可能な日本語対応文字コードの種類
●   MySQL はカラムごと、セッションごとに文字コー
    ドを指定可能
    ●   文字コードが異なる場合には自動変換
    ●   自動変換が起きないようにするのが理想
    ●   使用するプログラミング言語にあわせて、正しく文字コードを指
        定する
    ●   迷ったらすべて utf8 で統一する
●   SHOW コマンドや INFORMATION_SCHEMA で使
    用中の文字コードを確認




             Copyright© 2012, Oracle. All rights reserved.
46

     宣伝
     ●
         好評につき「エキスパートのための MySQL [運
         用+管理]トラブルシューティングガイド」 近日増
         刷予定 !!
         ●   様々な角度から MySQL のトラブルを解析するのに役立つ書籍
             です。ぜひ安心な DBA 生活のお供に一冊どうぞ。
     ●   Contents
         ●   第 1 章 MySQL の概要
         ●   第 2 章 開発時における問題
         ●   第 3 章 MySQL の状態を見る
         ●   第 4 章 DTrace
         ●   第 5 章 運用中に起きる諸問題
         ●   第 6 章 堅牢な運用を実現するために
         ●   第 7 章 ソースコードのビルド


                    Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>




            Copyright© 2012, Oracle. All rights reserved.
Copyright© 2012, Oracle. All rights reserved.
49




     Copyright© 2012, Oracle. All rights reserved.

Contenu connexe

Tendances

雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニングyoku0825
 
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic BeanstalkAWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic BeanstalkAmazon Web Services Japan
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング佑哉 廣岡
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いたAkihiro Kuwano
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAmazon Web Services Japan
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)NTT DATA OSS Professional Services
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具yoku0825
 
SageMakerでもAUTOMATIC1111したい
SageMakerでもAUTOMATIC1111したいSageMakerでもAUTOMATIC1111したい
SageMakerでもAUTOMATIC1111したい真吾 吉田
 
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014Amazon Web Services
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
AWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management ConsoleAWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management ConsoleAmazon Web Services Japan
 
アジャイルにモデリングは必要か
アジャイルにモデリングは必要かアジャイルにモデリングは必要か
アジャイルにモデリングは必要かHiromasa Oka
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築Minero Aoki
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Masahito Zembutsu
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13Amazon Web Services Japan
 
20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMR20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMRAmazon Web Services Japan
 

Tendances (20)

雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic BeanstalkAWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
 
JVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニングJVMのGCアルゴリズムとチューニング
JVMのGCアルゴリズムとチューニング
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
 
Zabbix概論2018
Zabbix概論2018Zabbix概論2018
Zabbix概論2018
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
MySQLerの7つ道具
MySQLerの7つ道具MySQLerの7つ道具
MySQLerの7つ道具
 
SageMakerでもAUTOMATIC1111したい
SageMakerでもAUTOMATIC1111したいSageMakerでもAUTOMATIC1111したい
SageMakerでもAUTOMATIC1111したい
 
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
(SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
AWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management ConsoleAWS Black Belt Techシリーズ AWS Management Console
AWS Black Belt Techシリーズ AWS Management Console
 
アジャイルにモデリングは必要か
アジャイルにモデリングは必要かアジャイルにモデリングは必要か
アジャイルにモデリングは必要か
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 
Metaspace
MetaspaceMetaspace
Metaspace
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMR20191023 AWS Black Belt Online Seminar Amazon EMR
20191023 AWS Black Belt Online Seminar Amazon EMR
 

En vedette

配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境yut148atgmaildotcom
 
MySQLインストールのお作法
MySQLインストールのお作法MySQLインストールのお作法
MySQLインストールのお作法Meiji Kimura
 
MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことSatoshi Suzuki
 
私がMySQLを始めた理由
私がMySQLを始めた理由私がMySQLを始めた理由
私がMySQLを始めた理由yoyamasaki
 
初心者向けMySQLの始め方
初心者向けMySQLの始め方初心者向けMySQLの始め方
初心者向けMySQLの始め方Masahiro Tomita
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情Masahiro Tomita
 
リレーショナルな正しいデータベース設計
リレーショナルな正しいデータベース設計リレーショナルな正しいデータベース設計
リレーショナルな正しいデータベース設計Mikiya Okuno
 
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったかMikiya Okuno
 
MySQLのプロトコル解説
MySQLのプロトコル解説MySQLのプロトコル解説
MySQLのプロトコル解説Masahiro Tomita
 
Database qpstudy-okuno
Database qpstudy-okunoDatabase qpstudy-okuno
Database qpstudy-okunoMikiya Okuno
 
Enter the-dolphine
Enter the-dolphineEnter the-dolphine
Enter the-dolphineMikiya Okuno
 
MySQL 5.5 Update #denatech
MySQL 5.5 Update #denatechMySQL 5.5 Update #denatech
MySQL 5.5 Update #denatechMikiya Okuno
 
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2Mikiya Okuno
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめMikiya Okuno
 
Rdbms qpstudy-okuno
Rdbms qpstudy-okunoRdbms qpstudy-okuno
Rdbms qpstudy-okunoMikiya Okuno
 
Zabbixのパフォーマンスチューニング & インストール時の注意点
Zabbixのパフォーマンスチューニング & インストール時の注意点Zabbixのパフォーマンスチューニング & インストール時の注意点
Zabbixのパフォーマンスチューニング & インストール時の注意点Kodai Terashima
 
Art of MySQL Replication.
Art of MySQL Replication.Art of MySQL Replication.
Art of MySQL Replication.Mikiya Okuno
 
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012Mikiya Okuno
 

En vedette (20)

配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 
MySQLインストールのお作法
MySQLインストールのお作法MySQLインストールのお作法
MySQLインストールのお作法
 
MySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したことMySQL ガチBeginnerがやってみたことと反省したこと
MySQL ガチBeginnerがやってみたことと反省したこと
 
私がMySQLを始めた理由
私がMySQLを始めた理由私がMySQLを始めた理由
私がMySQLを始めた理由
 
初心者向けMySQLの始め方
初心者向けMySQLの始め方初心者向けMySQLの始め方
初心者向けMySQLの始め方
 
Mysql toranomaki
Mysql toranomakiMysql toranomaki
Mysql toranomaki
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情
 
リレーショナルな正しいデータベース設計
リレーショナルな正しいデータベース設計リレーショナルな正しいデータベース設計
リレーショナルな正しいデータベース設計
 
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
 
MySQLのプロトコル解説
MySQLのプロトコル解説MySQLのプロトコル解説
MySQLのプロトコル解説
 
Apache Module
Apache ModuleApache Module
Apache Module
 
Database qpstudy-okuno
Database qpstudy-okunoDatabase qpstudy-okuno
Database qpstudy-okuno
 
Enter the-dolphine
Enter the-dolphineEnter the-dolphine
Enter the-dolphine
 
MySQL 5.5 Update #denatech
MySQL 5.5 Update #denatechMySQL 5.5 Update #denatech
MySQL 5.5 Update #denatech
 
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
 
Rdbms qpstudy-okuno
Rdbms qpstudy-okunoRdbms qpstudy-okuno
Rdbms qpstudy-okuno
 
Zabbixのパフォーマンスチューニング & インストール時の注意点
Zabbixのパフォーマンスチューニング & インストール時の注意点Zabbixのパフォーマンスチューニング & インストール時の注意点
Zabbixのパフォーマンスチューニング & インストール時の注意点
 
Art of MySQL Replication.
Art of MySQL Replication.Art of MySQL Replication.
Art of MySQL Replication.
 
MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012MySQL 5.6新機能解説@dbtechshowcase2012
MySQL 5.6新機能解説@dbtechshowcase2012
 

Similaire à MySQL日本語利用徹底入門

MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!yoyamasaki
 
ついにリリース!! MySQL 8.0 最新情報
ついにリリース!! MySQL 8.0 最新情報ついにリリース!! MySQL 8.0 最新情報
ついにリリース!! MySQL 8.0 最新情報yoyamasaki
 
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合Ryusuke Kajiyama
 
MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)Shinya Sugiyama
 
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0Ryusuke Kajiyama
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索yoyamasaki
 
Qlik Replicateでのタスクの定義と管理
Qlik Replicateでのタスクの定義と管理Qlik Replicateでのタスクの定義と管理
Qlik Replicateでのタスクの定義と管理QlikPresalesJapan
 
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSPostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSNoriyoshi Shinoda
 
Introduction of Oracle Database Architecture
Introduction of Oracle Database ArchitectureIntroduction of Oracle Database Architecture
Introduction of Oracle Database ArchitectureRyota Watabe
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強Kiyoshi Ogawa
 
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 versionHow to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 versionKiyoshi Ogawa
 
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...Insight Technology, Inc.
 
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQLMySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQLRyusuke Kajiyama
 
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについてCentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについてNobuyuki Sasaki
 
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料yoyamasaki
 
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?Masayuki Ozawa
 

Similaire à MySQL日本語利用徹底入門 (20)

Mysql charset
Mysql charsetMysql charset
Mysql charset
 
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
MySQL Cluster7.3 GAリリース記念セミナー! MySQL & NoSQL 圧倒的な進化を続けるMySQLの最新機能!
 
ついにリリース!! MySQL 8.0 最新情報
ついにリリース!! MySQL 8.0 最新情報ついにリリース!! MySQL 8.0 最新情報
ついにリリース!! MySQL 8.0 最新情報
 
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
[db tech showcase 2017 Tokyo] D31 - MySQL 8.0の日本語キャラクタ・セットと文字照合
 
MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)MySQL 5.7 Technical Update (日本語)
MySQL 5.7 Technical Update (日本語)
 
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
[OSC 2017 Tokyo/Fall] OSSコンソーシアム DB部会 MySQL 8.0
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
 
Qlik Replicateでのタスクの定義と管理
Qlik Replicateでのタスクの定義と管理Qlik Replicateでのタスクの定義と管理
Qlik Replicateでのタスクの定義と管理
 
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSPostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
 
Introduction of Oracle Database Architecture
Introduction of Oracle Database ArchitectureIntroduction of Oracle Database Architecture
Introduction of Oracle Database Architecture
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
 
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 versionHow to use STARC RTL Design Style Guide Verilog-HDL 2011 version
How to use STARC RTL Design Style Guide Verilog-HDL 2011 version
 
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
[db tech showcase Tokyo 2015] D23:MySQLはドキュメントデータベースになり、HTTPもしゃべる - MySQL Lab...
 
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQLMySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
MySQLのNoSQL機能 - MySQL JSON & HTTP Plugin for MySQL
 
Mysqlの文字コード
Mysqlの文字コードMysqlの文字コード
Mysqlの文字コード
 
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについてCentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
CentOS 8で標準搭載! 「389-ds」で構築する 認証サーバーについて
 
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
MySQL最新情報 ※2015年9月5日「第1回 関西DB勉強会」での発表資料
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
Babelfish Compatibility
Babelfish CompatibilityBabelfish Compatibility
Babelfish Compatibility
 
Seas で語られたこととは?
Seas で語られたこととは?Seas で語られたこととは?
Seas で語られたこととは?
 

Plus de Mikiya Okuno

MySQL Cluster 新機能解説 7.5 and beyond
MySQL Cluster 新機能解説 7.5 and beyondMySQL Cluster 新機能解説 7.5 and beyond
MySQL Cluster 新機能解説 7.5 and beyondMikiya Okuno
 
MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編Mikiya Okuno
 
リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方Mikiya Okuno
 
リレーショナルデータベースとの上手な付き合い方 long version
リレーショナルデータベースとの上手な付き合い方 long version リレーショナルデータベースとの上手な付き合い方 long version
リレーショナルデータベースとの上手な付き合い方 long version Mikiya Okuno
 
What's New in MySQL 5.7 Security
What's New in MySQL 5.7 SecurityWhat's New in MySQL 5.7 Security
What's New in MySQL 5.7 SecurityMikiya Okuno
 
What's New in MySQL 5.7 Replication
What's New in MySQL 5.7 ReplicationWhat's New in MySQL 5.7 Replication
What's New in MySQL 5.7 ReplicationMikiya Okuno
 
とあるギークのキーボード遍歴
とあるギークのキーボード遍歴とあるギークのキーボード遍歴
とあるギークのキーボード遍歴Mikiya Okuno
 
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座Mikiya Okuno
 
What's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDBWhat's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDBMikiya Okuno
 
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015Mikiya Okuno
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)Mikiya Okuno
 
なぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのかなぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのかMikiya Okuno
 
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜Mikiya Okuno
 
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06Mikiya Okuno
 
人類は如何にして大切な データベースを守るべきか
人類は如何にして大切な データベースを守るべきか人類は如何にして大切な データベースを守るべきか
人類は如何にして大切な データベースを守るべきかMikiya Okuno
 
RDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考えるRDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考えるMikiya Okuno
 
あなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデルあなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデルMikiya Okuno
 
MySQLトラブル解析入門
MySQLトラブル解析入門MySQLトラブル解析入門
MySQLトラブル解析入門Mikiya Okuno
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南Mikiya Okuno
 
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09Mikiya Okuno
 

Plus de Mikiya Okuno (20)

MySQL Cluster 新機能解説 7.5 and beyond
MySQL Cluster 新機能解説 7.5 and beyondMySQL Cluster 新機能解説 7.5 and beyond
MySQL Cluster 新機能解説 7.5 and beyond
 
MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編
 
リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方リレーショナルデータベースとの上手な付き合い方
リレーショナルデータベースとの上手な付き合い方
 
リレーショナルデータベースとの上手な付き合い方 long version
リレーショナルデータベースとの上手な付き合い方 long version リレーショナルデータベースとの上手な付き合い方 long version
リレーショナルデータベースとの上手な付き合い方 long version
 
What's New in MySQL 5.7 Security
What's New in MySQL 5.7 SecurityWhat's New in MySQL 5.7 Security
What's New in MySQL 5.7 Security
 
What's New in MySQL 5.7 Replication
What's New in MySQL 5.7 ReplicationWhat's New in MySQL 5.7 Replication
What's New in MySQL 5.7 Replication
 
とあるギークのキーボード遍歴
とあるギークのキーボード遍歴とあるギークのキーボード遍歴
とあるギークのキーボード遍歴
 
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
 
What's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDBWhat's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDB
 
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
 
なぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのかなぜ、いまリレーショナルモデルなのか
なぜ、いまリレーショナルモデルなのか
 
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
データモデルについて知っておくべき7つのこと 〜NoSQLに手を出す前に〜
 
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
MySQL Cluster 7.4で楽しむスケールアウト @DB Tech Showcase 2015/06
 
人類は如何にして大切な データベースを守るべきか
人類は如何にして大切な データベースを守るべきか人類は如何にして大切な データベースを守るべきか
人類は如何にして大切な データベースを守るべきか
 
RDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考えるRDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考える
 
あなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデルあなたが知らない リレーショナルモデル
あなたが知らない リレーショナルモデル
 
MySQLトラブル解析入門
MySQLトラブル解析入門MySQLトラブル解析入門
MySQLトラブル解析入門
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
 

Dernier

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Dernier (10)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

MySQL日本語利用徹底入門

  • 1. <Insert Picture Here> MySQL 日本語利用徹底入門 日本オラクル株式会社 MySQL Global Business Unit テクニカルアナリスト 奥野幹也 2012 年 5 月 29 日 Copyright© 2012, Oracle. All rights reserved.
  • 2. 2 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。ま た、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはでき ません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確 約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オ ラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊 社の裁量により決定されます。 Oracle と Java は、 Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。 Copyright© 2012, Oracle. All rights reserved.
  • 3. <Insert Picture Here> 文字コードとは Copyright© 2012, Oracle. All rights reserved.
  • 4. 文字コードは文字を符号化したもの。 ● ASCII ● 7ビットで表現可能なラテン文字を中心とした文字コード ● a ---> 0x61, b ---> 0x62, c ---> 0x63 ● JIS X 208 ● Shift_JIS … 日本 ---> 0x93FA967B ● EUC-JP … 日本 ---> 0xC6FCCBDC ● UTF-8 … 日本 ---> 0xE697A5E69CAC 符号化の方式にはいくつか種類がある Copyright© 2012, Oracle. All rights reserved.
  • 5. <Insert Picture Here> MySQL と文字コード Copyright© 2012, Oracle. All rights reserved.
  • 6. MySQL の文字コードは結構複雑? MySQL の文字コードの実装は とても柔軟 柔軟さが増せば複雑さも増す・・・ Copyright© 2012, Oracle. All rights reserved.
  • 7. MySQL で利用可能な日本語対応文字コード 文字コード名 対応文字 ストレージサイズ sjis JIS X 0208:1997 1 〜 2 バイト cp932 JIS X 0208:1997 + NEC 特殊文字 1 〜 2 バイト ・ IBM 拡張文字 ujis JIS X 0208:1997 1 〜 3 バイト eucjpms JIS X 0208:1997 + NEC 特殊文字 1 〜 3 バイト ・ IBM 拡張文字 utf8 JIS X 0208:1997 + NEC 特殊文字 1 〜 3 バイト ・ IBM 拡張文字 utf8mb4 JIS X 0213:2004 1 〜 4 バイト Copyright© 2012, Oracle. All rights reserved.
  • 8. 照合順序 文字の並び順を定義したもの。 mysql> set names utf8 collate utf8_general_ci; Query OK, 0 rows affected (0.00 sec) mysql> select 'abc' = 'ABC'; +---------------+ | 'abc' = 'ABC' | +---------------+ | 1 | +---------------+ 1 row in set (0.00 sec) mysql> set names utf8 collate utf8_bin; Query OK, 0 rows affected (0.00 sec) ソートや比較の mysql> select 'abc' = 'ABC'; 結果に影響 +---------------+ | 'abc' = 'ABC' | +---------------+ | 0 | +---------------+ 1 row in set (0.00 sec) Copyright© 2012, Oracle. All rights reserved.
  • 9. MySQL で使用可能な照合順序 mysql> show collation; +--------------------------+----------+-----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +--------------------------+----------+-----+---------+----------+---------+ | big5_chinese_ci | big5 | 1 | Yes | Yes | 1 | | big5_bin | big5 | 84 | | Yes | 1 | | dec8_swedish_ci | dec8 | 3 | Yes | Yes | 1 | | dec8_bin | dec8 | 69 | | Yes | 1 | : : | eucjpms_japanese_ci | eucjpms | 97 | Yes | Yes | 1 | | eucjpms_bin | eucjpms | 98 | | Yes | 1 | +--------------------------+----------+-----+---------+----------+---------+ 197 rows in set (0.01 sec) 照合順序は文字コードにマッチしている必要がある Copyright© 2012, Oracle. All rights reserved.
  • 10. 文字コードはセッションごとに異なるかも。 UTF-8 セッション 1 クライアント 1 セッション 2 クライアント 2 Shift_JIS MySQL サーバー Copyright© 2012, Oracle. All rights reserved.
  • 11. 文字コードはテーブルごとに異なるかも。 Shift_JIS テーブル UTF-8 EUC_JP テーブル テーブル MySQL サーバー Copyright© 2012, Oracle. All rights reserved.
  • 12. 文字コードはカラムごとに異なるかも。 UTF-8 カラム 1 Shift_JIS カラム 2 カラム 3 binary テーブル MySQL サーバー Copyright© 2012, Oracle. All rights reserved.
  • 13. MySQL サーバー内の文字コード変換 ④ データを ② クエリの実行 蓄える際の に利用する ① 送信する 文字コード 文字コード SQL 文に対する ⑤ テーブル名や 文字コード カラム名に対する 文字コード セッション クライアント テーブル MySQL サーバー ③ クエリの 実行結果に対する ⑥ ファイル名を 文字コード 解決する際の 文字コード ファイルシステム 出展:エキスパートのための MySQL [運用+管理]トラブルシューティングガイド Copyright© 2012, Oracle. All rights reserved.
  • 14. 文字コードを確認する ● SHOW [GLOBAL] VARIABLES LIKE 'char%'; (1)character_set_client (2)character_set_connection (3)character_set_results (4)character_set_server/character_set_database (5)character_set_system (6)character_set_filesystem Copyright© 2012, Oracle. All rights reserved.
  • 15. <Insert Picture Here> テーブルの文字コード Copyright© 2012, Oracle. All rights reserved.
  • 16. テーブルの文字コード(1) ● カラムごとに文字コードを指定可能 CREATE TABLE t ( a VARCHAR(100) CHARACTER SET cp932, b VARCHAR(100) CHARACTER SET eucjpms, c VARCHAR(100) CHARACTER SET utf8, : ); 超柔軟 Copyright© 2012, Oracle. All rights reserved.
  • 17. テーブルの文字コード (2) CREATE TABLE t ( a VARCHAR(100) CHARACTER SET cp932, b VARCHAR(100) CHARACTER SET eucjpms, c VARCHAR(100), : ) CHARACTER SET utf8; 指定がない場合にはテーブルのデフォルト文字コードに Copyright© 2012, Oracle. All rights reserved.
  • 18. テーブルの文字コード (3) CREATE TABLE t ( a VARCHAR(100) CHARACTER SET cp932, b VARCHAR(100) CHARACTER SET eucjpms, c VARCHAR(100), : ); テーブルの文字コードの指定がない場合には・・・ ● データベースの文字コードがテーブルのデフォルト文字コードに ● テーブルのデフォルト文字コードがカラムの文字コードに Copyright© 2012, Oracle. All rights reserved.
  • 19. データベースの文字コード CREATE DATABASE d1 CHARACTER SET utf8; CREATE DATABASE d2; 指定がない場合には character_set_server に SET GLOBAL character_set_server = utf8 Copyright© 2012, Oracle. All rights reserved.
  • 20. 文字コードのデフォルト値 characer_set_server データベースの文字コード ( character_set_database ) テーブルのデフォルト文字コード 優先度が カラムの文字コード 最も高い Copyright© 2012, Oracle. All rights reserved.
  • 21. 照合順序の設定方法 CREATE TABLE t ( a VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_bin, : ); CREATE DATABASE d CHARACTER SET utf8 COLLATE utf8_bin; SET GLOBAL collation_server = utf8_bin; Copyright© 2012, Oracle. All rights reserved.
  • 22. テーブルの文字コードの確認方法 (1) mysql> show create table CityG *************************** 1. row *************************** Table: City Create Table: CREATE TABLE `City` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Name` char(35) NOT NULL DEFAULT '', `CountryCode` char(3) NOT NULL DEFAULT '', `District` char(20) NOT NULL DEFAULT '', `Population` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`) ) ENGINE=MyISAM AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1 1 row in set (0.00 sec) Copyright© 2012, Oracle. All rights reserved.
  • 23. テーブルの文字コードの確認方法 (2) mysql> show full fields in CityG *************************** 1. row *************************** 中略 *************************** 2. row *************************** Field: Name Type: char(35) Collation: latin1_swedish_ci Null: NO Key: Default: Extra: Privileges: select,insert,update,references Comment: *************************** 3. row *************************** : Copyright© 2012, Oracle. All rights reserved.
  • 24. テーブルの文字コードの確認方法 (3) mysql> select table_name, column_name, collation_name from information_schema.columns where collation_name is not null and table_schema='world'; +-----------------+----------------+-------------------+ | table_name | column_name | collation_name | +-----------------+----------------+-------------------+ | City | Name | latin1_swedish_ci | | City | CountryCode | latin1_swedish_ci | | City | District | latin1_swedish_ci | | Country | Code | latin1_swedish_ci | | Country | Name | latin1_swedish_ci | | Country | Continent | latin1_swedish_ci | | Country | Region | latin1_swedish_ci | | Country | LocalName | latin1_swedish_ci | | Country | GovernmentForm | latin1_swedish_ci | | Country | HeadOfState | latin1_swedish_ci | | Country | Code2 | latin1_swedish_ci | | CountryLanguage | CountryCode | latin1_swedish_ci | | CountryLanguage | Language | latin1_swedish_ci | | CountryLanguage | IsOfficial | latin1_swedish_ci | +-----------------+----------------+-------------------+ 14 rows in set (0.01 sec) Copyright© 2012, Oracle. All rights reserved.
  • 25. テーブルの文字コードの確認方法 (4) mysql> select table_schema, table_name, column_name, collation_name from information_schema.columns where collation_name not like 'latin%' and table_schema not in ('mysql', 'information_schema', 'performance_schema'); Empty set (0.00 sec) Copyright© 2012, Oracle. All rights reserved.
  • 26. <Insert Picture Here> オプション Copyright© 2012, Oracle. All rights reserved.
  • 27. 文字コード関係のオプション ● character_set_server … データベースの文字コードのデ フォルトになる ● character_set_database … データベースの文字コード。 テーブルの文字コードのデフォルトになる。 CREATE DATABASE 実行時に指定したものと同じ。 ● character_set_connection … クライアントごとに設定可 能な文字コード。 SQL の評価時に適用される。 ● character_set_client … クライアントから送信される文字 データの文字コード。 ● character_set_results … クライアントへ送信される結果 に含まれる文字データの文字コード。 ● character_set_system … テーブル名などの文字コード。 常に utf8 。 ● character_set_filesystem … ファイルシステムへアクセ スする際に用いられる文字コード。 Copyright© 2012, Oracle. All rights reserved.
  • 28. 照合順序関係のオプション ● collation_server … データベースの照合順序のデ フォルトになる。 ● collation_database … データベースの照合順序。 テーブルの照合順序のデフォルトになる。 CREATE DATABASE 実行時に指定したものと同じ。 ● collation_connection … クライアントごとに設定可 能な照合順序。 SQL の評価時に適用される。 Copyright© 2012, Oracle. All rights reserved.
  • 29. skip_character_set_client_handshake ● クライアントが指定した文字コードを無視してサー バーが指定した文字コードを使用 ● C API や PHP 利用時に便利 ● Connector/J では効かないので注意 Copyright© 2012, Oracle. All rights reserved.
  • 30. default_character_set ● 古いオプションなのでサーバーでは利用しないよう ● MySQL 5.5 で廃止 ● クライアントでは現在も利用中 Copyright© 2012, Oracle. All rights reserved.
  • 31. <Insert Picture Here> ドライバ Copyright© 2012, Oracle. All rights reserved.
  • 32. C API mysql = mysql_init(NULL); if (!mysql_real_connect(mysql, NULL, "user", "password", "db", 3306, NULL, 0)) { printf("Cannot connect: %s", mysql_error(mysql)); goto err; }; if (mysql_set_character_set(mysql, "utf8")) goto err; Copyright© 2012, Oracle. All rights reserved.
  • 33. PHP ● モジュールごとに指定法が異なる ● MySQL 拡張モジュール( mysql ) … mysql_set_charset() ま たは SET NAMES ● MySQL 改良型拡張モジュール( mysqli ) … mysqli_set_charset() または mysqli::set_charset() または SET NAMES ● PDO … SET NAMES <?php $dbh = mysql_connect('hostname:3306', 'user', 'password'); if (!$dbh) { die('Failed to connect MySQL Server: ' . mysql_error()); } if(!mysql_set_charset('utf8', $dbh)) { die('Failed to change charset.'); } Copyright© 2012, Oracle. All rights reserved.
  • 34. Perl ● mysql_enable_utf8 属性を指定して、 UTF-8 フラグ が有効な文字列を使う。 ● mysql_enable_utf8 属性を指定せず、 MySQL Server から受け取った文字列を decode() 、 MySQL Server へ渡す文字列を encode() する。 my $dbh = DBI->connect( "DBI:mysql:database=db_name;host=hostname", "user", "password", { RaiseError => 1, mysql_enable_utf8=>1 }); Copyright© 2012, Oracle. All rights reserved.
  • 35. Java ( Connector/J ) ● 文字コードは characterEncoding プロパティで指定 ● 指定がない場合には接続先の character_set_server により決 定。接続後 SET NAMES をドライバが実行。 ● --skip-character-set-client-handshake は効かない ● characterEncoding が何であれ Java の文字列は ucs2 に変換される。 Class.forName("com.mysql.jdbc.Driver"); Properties props = new Properties(); props.setProperty("user", "mikiya"); props.setProperty("password", "mikiya's password"); props.setProperty("characterEncoding", "UTF-8"); conn = DriverManager.getConnection(url, props); Copyright© 2012, Oracle. All rights reserved.
  • 36. Ruby #!/usr/bin/ruby -Ks : my = Mysql.init() my.options(Mysql::SET_CHARSET_NAME, 'cp932') my.real_connect('127.0.0.1', 'user', 'password', 'db') res = my.query('SELECT some_str_col FROM some_tbl WHERE...'); res.each do |row| puts row[0] # シフト JIS ( Cp932 )で出力されま す。 : end Copyright© 2012, Oracle. All rights reserved.
  • 37. <Insert Picture Here> 文字コード関係の トラブル Copyright© 2012, Oracle. All rights reserved.
  • 38. 文字化けの原因と対策 ● 実際のデータと文字コードが一致していないと化け る。 ● 接続用の文字コードは問題ないか? – アプリケーションが期待している文字コードとドライバの文 字コードは同じか? ● 端末の文字コードは問題ないか? ● テーブル内のデータは問題ないか? Copyright© 2012, Oracle. All rights reserved.
  • 39. LOAD DATA INFILE/SELECT … INTO OUTFILE ● LOAD DATA INFILE ● ファイルの文字コードが character_set_database になってい ることを期待している ● SET character_set_database = charset_name ● テーブルの文字コードと同じ場合には binary を指定する ● mysqlimport を使う ● SELECT … INTO OUTFILE ● デフォルトでは文字コード変換しない – LOAD DATA で読むときは binary を指定すると良い ● SELECT … INTO OUTOFILE 'file_name' CHARACTER SET charset_name ... Copyright© 2012, Oracle. All rights reserved.
  • 40. latin1 で格納されている? ● セッションの文字コードもテーブルの文字コードも latin1 の場合、文字コードの変換が起きないので、 文字化けも起きない。 ● 照合順序が狂ってしまう (latin1_swedish_ci を用い て 1 バイトずつ比較されてしまう ) ● 本来の文字コードを指定して接続すると , 文字化け してしまう Copyright© 2012, Oracle. All rights reserved.
  • 41. latin1 で格納されている?(つづき) mysql> set names latin1; Query OK, 0 rows affected (0.00 sec) mysql> create table t (a char(30) character set latin1); Query OK, 0 rows affected (0.00 sec) mysql> insert into t values(' これはテストです。 '); Query OK, 1 row affected (0.00 sec) mysql> select * from t; +-----------------------------+ | a | +-----------------------------+ | これはテストです。 | +-----------------------------+ 1 row in set (0.00 sec) Copyright© 2012, Oracle. All rights reserved.
  • 42. 5C 問題 Shift_JIS の2バイト目が 0x5C (¥)であることに起 因する問題。リテラルとして解釈すると 0x5C がエス ケープ文字として扱われてしまう。 mysql> set names sjis; mysql> set names latin1; Query OK, 0 rows Query OK, 0 rows affected (0.00 sec) affected (0.00 sec) mysql> select ' 表 abc'; mysql> select ' 表 abc'; +-------+ +------+ | 表 abc | | 病 bc | +-------+ +------+ | 表 abc | | 病 bc | +-------+ +------+ 1 row in set (0.00 sec) 1 row in set (0.00 sec) Copyright© 2012, Oracle. All rights reserved.
  • 43. ラウンドトリップ変換 mysql> create table t (a char(1) character set eucjpms); Query OK, 0 rows affected (0.01 sec) mysql> insert into t values(unhex('8FA2B7')); Query OK, 1 row affected (0.01 sec) mysql> select hex(a) from t; +--------+ | hex(a) | +--------+ | 8FA2B7 | +--------+ 1 row in set (0.00 sec) mysql> select hex(convert(convert(a using cp932) using eucjpms)) from t; +----------------------------------------------------+ | hex(convert(convert(a using cp932) using eucjpms)) | +----------------------------------------------------+ | A1C1 | +----------------------------------------------------+ 1 row in set (0.00 sec) Copyright© 2012, Oracle. All rights reserved.
  • 44. <Insert Picture Here> まとめ Copyright© 2012, Oracle. All rights reserved.
  • 45. まとめ ● MySQL で利用可能な日本語対応文字コードの種類 ● MySQL はカラムごと、セッションごとに文字コー ドを指定可能 ● 文字コードが異なる場合には自動変換 ● 自動変換が起きないようにするのが理想 ● 使用するプログラミング言語にあわせて、正しく文字コードを指 定する ● 迷ったらすべて utf8 で統一する ● SHOW コマンドや INFORMATION_SCHEMA で使 用中の文字コードを確認 Copyright© 2012, Oracle. All rights reserved.
  • 46. 46 宣伝 ● 好評につき「エキスパートのための MySQL [運 用+管理]トラブルシューティングガイド」 近日増 刷予定 !! ● 様々な角度から MySQL のトラブルを解析するのに役立つ書籍 です。ぜひ安心な DBA 生活のお供に一冊どうぞ。 ● Contents ● 第 1 章 MySQL の概要 ● 第 2 章 開発時における問題 ● 第 3 章 MySQL の状態を見る ● 第 4 章 DTrace ● 第 5 章 運用中に起きる諸問題 ● 第 6 章 堅牢な運用を実現するために ● 第 7 章 ソースコードのビルド Copyright© 2012, Oracle. All rights reserved.
  • 47. <Insert Picture Here> Copyright© 2012, Oracle. All rights reserved.
  • 48. Copyright© 2012, Oracle. All rights reserved.
  • 49. 49 Copyright© 2012, Oracle. All rights reserved.