2024年6月22日に開催された「第14回 関西DB勉強会 」での、 『こんなに違うよ MySQLとPostgreSQL ~MySQLとPostgreSQLのニッチな違いを語る~』 の発表資料です。 https://kansaidbstudy.connpass.com/event/316348/
![こんなに違うよ MySQLとPostgreSQL /](https://cdn-ak-scissors.b.st-hatena.com/image/square/e436bc92ca183ad5c88004a565f12654b62a6ebd/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F2398ef954df34c139ba26b76d8acfb96%2Fslide_0.jpg%3F30717582)
MySQL で「Illegal mix of collations」というエラーが出ることがあります。テーブルの charset と接続の charset 等、すべてを utf8 などで統一してれば出ないので、あまり見ることはないかもしれません。 私はカラム毎に charset を指定することがあるので、時々このエラーにハマります。 たとえば、次のようなテーブルを作ったりします。 CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, email VARCHAR(320) CHARSET ascii UNIQUE, name VARCHAR(30) CHARSET utf8 ); メールアドレスの規約は、ローカル部が最大64バイト、ドメイン部が最大255バイト、それと @ の1バイトで合計最大320バイトなので、 VARCHAR(32
以下に移行しました。 kenzo0107.github.io
とある MySQL のダンプファイルをインポートしようとしたところ、次のような警告が表示されました。 Warning (Code 1300): Invalid utf8 character string: 'FFFFFF' インポートに失敗しているわけではないですがやや気持ち悪いです。 原因 blob とかのバイナリを含むテーブルを mysqldump して mysql でインポートしようとしたためです。 create table t (x blob, z text); insert into t values (x'FFFF0123456789ABCDEF', 'あいうえお'); select hex(x), z from t; +----------------------+-----------------+ | hex(x) | z | +---------------------
某所に300ホスト以上を2年ほど監視していたZabbixのMySQLがありまして、データが100GBぐらいになってメモリ8GBのホストではdisk IOが辛くなってきたので、移行することにしました。普段はそんなにでもないのですが、housekeeperが動作して古いデータを消しに行くとバッファプールに乗っていない部分に読みに行って重いのです。 この際折角なので Intel S3700 (サーバ用のSSD) をおごり、 Zabbix-1.8 から 2.0 にアップグレード MySQL-5.0.77 から MySQL-5.6.11 に変更 システムは HDD で /dev/sda1 データは SSD で /dev/sdb1 を /data にマウント という構成で移行の検証を行っていたところ… MySQLのバージョンが大きく上がるので mysqldump を取得して restore 後、pat
それほどDBに詳しくないアプリエンジニアが何かトラブった時にすぐさま行動して問題把握できるようになる情報を列挙しておきます。 開発時、障害時の対処療法やちょっとした定期監視方法などを対象にしています。 抜本的な対策などはインフラエンジニアさんにお任せしたほうがいいと思います。 DBはいろんな意味でこわいんでできれば触りたくないです>< 事前確認 MySQLサーバーのシステム設定値を確認しておく 以下のようにサーバーのシステム設定値を確認できます。 mysql> SHOW GLOBAL VARIABLES; # ワイルドカード(%)を用いた絞り込み mysql> SHOW GLOBAL VARIABLES LIKE 'performance_schema%'
MySQLのコネクションハンドリングの内部構造、スケール限界、そして最大コネクション数のチューニングなどについてご紹介します 免責事項 この記事はGeir Hoydalsvik氏によるMySQL Server Blogの投稿「MySQL Connection Handling and Scaling」(2019/3/19)をユーザが翻訳したものであり、Oracle公式の文書ではありません。 この投稿では、MySQLのコネクション、ユーザースレッドおよびスケーリングについて取り扱います。MySQLがどのように動作するかをよりよく理解することで、アプリケーション開発者やシステム管理者が、トレードオフを踏まえた良い選択をできることでしょう。本記事ではコミュニティー版でコネクションがどのように動作するかについて述べますが、一方でスレッドプール、リソースグループ、あるいはコネクション多重化といった関
2007/ 01 02 03 04 05 06 07 08 09 10 2006/ 01 02 03 04 05 06 07 08 09 10 11 12 2005/ 01 02 03 04 05 06 07 08 09 10 11 12 2004/ 01 02 03 04 05 06 07 08 09 10 11 12 2003/ 01 02 03 04 05 06 07 08 09 10 11 12 2002/ 01 02 03 04 05 06 07 08 09 10 11 12 2001/ 01 02 03 04 05 06 07 08 09 10 11 12 2000/ 01 02 03 04 05 06 07 08 09 10 11 12 1999/ 01 02 03 04 05 06 07 08 09 10 11 12 1998/ 01 02 03 04 05 06 07 0
こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。先日親知らずを抜歯した時、つらすぎたので MySQL の JOIN のことを考えて心の平静を保っていました。 サイボウズの製品のひとつである kintone はニーズに応じて自由に業務アプリのようなものを手軽に作ることができ、データの検索条件やソート条件も細かくカスタマイズ可能で、様々なレベルでのアクセス権も設定可能という非常に便利なツールです。 しかしその機能を支える裏側では複雑なクエリが発行され、MySQL に多大な負荷をかけています。サイボウズのクラウドには数十テラバイトに登る MySQL データがあり、数千万件オーダーのテーブルを複数 JOIN するクエリが毎秒のように実行されるという、エンジニア魂が滾る環境です。 現在サイボウズでは性能改善に力を入れており、僕もその業務に従事しています。例えば2018年
MySQLがメモリー不足で停止してしまった(OOM Killerに停止させられた)時に確認すべき項目を紹介する。特に、MySQLのバグでメモリリークが起きている可能性がある場合に手がかりを得る方法について。 [MySQL]原文 What To Do When MySQL Runs Out of Memory: Troubleshooting Guide - Percona Database Performance Blog (English) 原文著者 Alexander Rubin 原文公開日 2018-06-28 翻訳依頼者 翻訳者 doublemarket 翻訳レビュアー kakuka4430 原著者への翻訳報告 1948日前 原文へのコメントで報告済み 編集 クラッシュした時のトラブルシューティングが楽しいタスクであったためしはありませんが、クラッシュの原因をMySQLが教えてくれ
ホーム / ハック / MySQLでgroup byした結果をカウントする
GROUP BY句を利用したSQLで、GROUP内の件数ではなく、最終結果件数を取得するSQLの書き方を教えてください。 出来れば標準に準拠したSQLがベストですが、MySQL依存でもかまいません。 例えば user |user_id|user_name| |1|hoge| |2|fuga| access_log |access_log_id|access_log_user_id|access_log_datetime| |1|1|2007-01-01 0:0:0| |2|1|2007-01-01 0:0:0| |3|2|2007-01-01 0:0:0| 上記のようなテーブルがある場合に、 下記のSQLを実行すると、 SELECT u.user_name, COUNT( * ) AS access_count FROM user AS u INNER JOIN access_log AS
発表されて1ヶ月経っていないUbuntu 16.04、私は早くもアップグレード予定を立てて作業を行っています。 さっそく流行物を使ってみようと色々試しているのですが当然ながらハマりまくりです、今回はその中でも特にハマったMariaDBのパスワードの不具合と解決策をご紹介しましょう。 MariaDBのパスワードが変 多分この記事をご覧の方であれば既にこの問題に当たっている方でしょうが、一応説明しましょう。 Ubuntu 16.04にてMariaDBをインストールするべく「sudo apt-get install mariadb-server」を実行するのですが、インストール中にパスワードを求める画面が出ない、訳も分からず「mysql -u root」でログインしようとしてもエラー、「sudo mysql -u root」だとログイン出来ると言う意味不明な状況です。 test@ubuntu:~
4月にMySQLの日本語コレーションについて語り合う場に呼ばれていろいろ話を聞いてきました。すぐにブログを書こうと思ったんですが、はや2ヶ月経過…。 ときどき、自分がMySQLの文字コードに関して発表する際に、次のようなスライドをいれてるんですが、 MySQL 8.0 でとうとう日本語コレーションが入ることになったのに、なんか期待してたのと違いました。 で、その辺の話を聞きました(2ヶ月も経ってるのでうろ覚え)。 Q. わざわざ日本語ロケール作るんだったら日本人が扱いやすいロケールにしてほしい utf8mb4_ja_0900_as_csはMySQLが独自に考えたものではない。Unicode規格に従っている。過去にいろいろ独自にやって失敗してきてるので、もう独自にやるのは避けたい。 ai(accent insensitive)で「ハ」=「パ」=「バ」になるのも、ci(case insensi
こんにちは、サービス開発部の荒引 (@a_bicky) です。 突然ですが、RDBMS の既存のテーブルを見てみたら「何でこんなにインデックスだらけなの?」みたいな経験はありませんか?不要なインデックスは容量を圧迫したり、挿入が遅くなったりと良いことがありません。 そんなわけで、今回はレコードを検索するために必要なインデックスの基礎知識と、よく見かける不適切なインデックスについて解説します。クックパッドでは Rails のデータベースとして主に MySQL 5.6、MySQL のストレージエンジンとして主に InnoDB を使っているので、MySQL 5.6 の InnoDB について解説します。 InnoDB のインデックスに関する基礎知識 インデックスの構造 (B+ 木) InnoDB では B+ 木が使われています。B+ 木は次のような特徴を持った木構造です。 次数を b とすると、
[mysqld] # データディレクトリ datadir=/var/lib/mysql # テンポラリディレクトリ tmpdir=/tmp # ポート番号 port=3306 # UNIXドメインソケット socket=/var/lib/mysql/mysql.sock # シンボリックリンクを使わない symbolic-links=0 # timestamp型カラムに暗黙的なデフォルト値を設定しない explicit_defaults_for_timestamp=TRUE # SQLモード sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES # サーバ側が使用するデフォルトの文字コード character-set-server=utf8 # クライアント側の文字コードの設定を無視する skip-character-set-client-
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く