かみぽわーる

kamipo's blog

MySQL 8.0ではデフォルトで濁点半濁点を区別しなくなる

4月にMySQL 8.0のUnicodeと日本語対応についてManyi Luさんとディスカッションする会があって、かなりいろいろ話してとてもよい会だった。その後いろいろ考えて感じてる懸念を端的に書き記しておく。 デフォルトのcollationがutf8mb4_0900_ai_ciになった こ…

MySQLでORDER BYをつけないときの並び順

メリークリスマス!?? このエントリはMySQL Casual Advent Calendar 2016の24日目です。 今日はこれの話です! @eagletmt 実装と実行計画依存です(たとえばInnoDBで単一カラムのインデックスが使われた場合のsort orderはprimary keyになるはずです)— Ryuta …

ISUCON6予選にチーム「それぞれの椅子」で参加した

ISUCON6予選1日目にチーム「それぞれの椅子(kamipo, Yappo, kan)」で参加した(kanさんは予定があってリモートからの友情出演)。 結果からいうとスコア15万ぐらいで安定したとこでもう時間ないから触るのやめて再起動チェックだけやって終わろうって再起動し…

MySQL 5.7のONLY_FULL_GROUP_BYはちょっと進化してた

このエントリはMySQL Casual Advent Calendar 2015の14日目です。 TL;DR MySQL 5.7ではデフォルトONLY_FULL_GROUP_BYが有効である。MySQL 5.7.5からONLY_FULL_GROUP_BYが有効のとき GROUP BY句のカラムと関数従属性のあるカラムはSELECT句に書けるようになっ…

MySQL 5.7のoptimizer_switch、derived_mergeとは何ぞや

このエントリはMySQL Casual Advent Calendar 2015の8日目です。 MySQL 5.7.6からoptimizer_switchにderived_mergeが追加されデフォルトで有効になっている。基本的にこれはほっといたらだいたいサブクエリが速くなるやつなので気にしなくてもいいんですが、…

HomebrewのMySQL 5.7.9でSSL接続するとコケるので気をつけよう

このエントリはMySQL Casual Advent Calendar 2015の3日目です。 で、これです。 github.com ざっと調べた感じだと、openssl 1.0.1eあたりからDiffie-Hellman (DH) key length 1024bit以上を要求するようになったかなんかで、MySQLが512bitとかいうかなり短…

Treasure Data に入社しました

近況などをブログに書いたことはなかったんですが、4月から Treasure Data で働くことになりました。 3月に新しい仕事を探してたタイミングでちょうど声をかけてもらって、他に誘ってくれてるところもあっていろいろ考えたんですけど、今まで自分がやってたW…

MySQL と寿司ビール問題

MySQL と Unicode Collation Algorithm (UCA) - かみぽわーる に関連するトピックで、 MySQL には寿司ビール問題というのがある。 寿司ビール問題どっかで詳しくお話を聞くべきだよなぁ。。。— RKajiyama (@RKajiyama) March 18, 2015 これはどういう問題か…

MySQL と Unicode Collation Algorithm (UCA)

utf8_unicode_ci に対する日本の開発者の見解 - かみぽわーる で、日本語が分かる人には utf8_unicode_ci のヤバさを感じてもらえたと思うんですけど、この挙動はドキュメントによると UCA というアルゴリズムによるものらしい。 MySQL implements the xxx_u…

utf8_unicode_ci に対する日本の開発者の見解

RailsがMySQLのcollationをサーバー側のデフォルトのutf8_general_ciからutf8_unicode_ciにわざわざ変えてるのどうせ大した理由じゃないだろと思って掘ってみたらやっぱり大した理由じゃなかった… https://t.co/6NeetGhTF0— Ryuta Kamizono (@kamipo) April …

MySQLにうるう秒は保存できるのか試した

結果、保存できなかった? SET sql_mode = STRICT_ALL_TABLES; CREATE TABLE time_leap ( dt datetime, ts timestamp ) ENGINE=InnoDB; INSERT INTO time_leap VALUES ('2012-06-30 23:59:59', '2012-06-30 23:59:59'); -- Query OK, 1 row affected (0.02 se…

InnoDBの制限とファイルフォーマットAntelopeとBarracudaの違い

この投稿はMySQL Casual Advent Calendar 2014の5日目の記事です。 @kamipo 質問させてください。このエントリーで COMPRESSED ではなく DYNAMIC を選んでいる理由はなぜですか?あまりDB詳しくないので参考リンクなどポインタを教えていただけるだけでも構…

Rails複数DB Casual TalksでMySQLとActiveRecordの話をしてきた

Rails複数DB Casual Talks - connpass お疲れさまでした。 当日は準備不足で資料がただのリンク集だったのを公開用に当社比800%ぐらい加筆したので、当日参加できなかった人が見ても内容がわかるようになってると思います。 MySQLとActiveRecord @ryopekoさ…

MySQLユーザーのためのPostgreSQL対応表

毎回わからなくなってググってるから今度からここに追記していく。 MySQL PostgreSQL SHOW DATABASES; \l USE dbname \c dbname SHOW TABLES; \dt SELECT * FROM tblname\G \x onSELECT * FROM tblname; SELECT * FROM information_schema.processlist; SELE…

ISUCON4予選に参加してきた

ISUCON4予選お疲れさまでした。 すこし時間が経ってしまったけど、当日うまくいかなかったことの復習をしたので備忘としてここに記します。 今回のチームメンバーは@Yappoさんと@ar_tamaちゃんでした。ギリギリのオファーにも関わらず一緒に参加してくれてあ…

YAPC::Asia 2014に行ってきた

#yapcramen #yapcramen @ar_tama @sugyan @sasata299 http://t.co/wQ7UsfXUtu pic.twitter.com/SgJs1a3zgQ— Ryuta Kamizono (@kamipo) August 30, 2014 OSSにも貢献しました! #yapcramen OSSに貢献しました https://t.co/ossAP7cusM— Ryuta Kamizono (@kami…

プライマリキーを使った1:1関連のテーブル分割で自動採番をしないようにする

プライマリキーを使った1:1関連でカラム数の多いテーブルを分割する - Hidden in Plain Sight プチ・デザインパターン的なやつ、僕もよくやってます。 で、運用エンジニア的にはデータの不整合を起こしうる要因はできる限りDB側の制約でも防ぎたいので、この…

InnoDBのロックの範囲とネクストキーロックの話

この記事はMySQL Casual Advent Calendar 2013 3日目の記事です。 はじめに 以前にSELECT ... FOR UPDATEとロックの挙動 - I sort my thought...の記事にTwitterで少し言及したんですが、それの補足というか、InnoDBのロックの範囲について僕はこう理解して…

優勝したらあの子に告白することばかり考えていた #isucon

ISUCON3本選お疲れさまでした! うちのチームのことはだいたいgfxが書いてる通りなんですけど、おもに僕がやったこととか本選後に振り返ってみたことを書いておきます。 予選後の教訓で、最初にちゃんとコードを読んで方針を決めようって話してたので、最初…

#mysqlcasual vol.5 で話してきたこと

先日オラクルで開催された MySQL Casual Talks Vol.5 に参加してきました。 mysql-build よもやま話 ありがたいことにいつも発表の機会を頂いてるので、なにか新しいネタをと思ってるんですが今回ちょっとネタも余裕もなくて、それでも聴いてる人がちょっと…

好きな子のことかslow query logのことばかり考えてほかのことがおろそかになる性格なおしたい #isucon

ISUCON3 予選おつかれさまでした! うちのチームのことはだいたいやっぽさんが書いてる通りなんですけど、おもに僕がやったこととかAMI提出後に振り返ってみたことを書いておきます。 振り返りはコチラ。 【ISUCON3】予選の振り返り【ぶっちゅぶす】 - Toget…

YAPC::Asia 2013でmysql-buildのLTしてきた

2日目のLTで、MySQLはSQLというDSLをつかって様々なストレージエンジンを共通のインターフェースで抽象化して扱うことのできるフレームワークなわけですがということで、mysql-buildでMySQLのプラグインも一緒にビルドする話をしてきました。 mysql-buildでQ…

Ubuntu で nano が立ち上がってしまうのをなんとかする方法

@__gfx__ ubuntu だと update-alternatives --display editor がデフォルトnanoになってるから update-alternatives --set editor /usr/bin/vim.basic するとvimにできるよ— Ryuta Kamizono (@kamipo) June 26, 2013 @__gfx__ ubuntuいれたときにまっさきに…

#mysqlcasual vol.4 でLTしてきました

4/17 に日本オラクルで開催された MySQL Casual #04 で話して来ました。 当日のスライドは以下になります。 SQLがむずかしくて生きるのがつらい ちょいとまだ作り始めたばっかりで微妙なところも多々あるんですが、mruby_storage_engine のレポジトリは以下…

鎌倉幕府の年号が変わっていた

@kamipo 11922013-02-22 10:01:00 via Echofon to @kamipo @hirose31 鎌倉幕府!?2013-02-22 10:01:14 via YoruFukurou to @hirose31 鎌倉幕府フイタ2013-02-22 10:02:24 via Echofon 鎌倉幕府の年号変わったんだよな…2013-02-22 10:02:36 via Twitter for …

簡単に手元でHTTPのファイルサーバ立てる方法

.zshrcにstatic_httpdって関数つくってる。 dotfiles/.zshrc at master · kamipo/dotfiles · GitHub function static_httpd { if which ruby > /dev/null; then ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port => 5000, :DocumentRoot => ".").start' el…

MySQL 5.6 で Q4M を動かしたい

一晩がんばってみたけどこれ以上は僕の力量では解決方法がわからないので誰か続きをお願いします…! kamipo/q4m at mysql-5.6 · GitHub とりあえずビルドが通ってlibqueue_engine.soまではできあがるんだけど、INSTALL PLUGIN queue SONAME 'libqueue_engine…

MySQL の unknown option エラーはオプションに loose- プレフィックスをつけると回避できる

もうMySQL 5.5 GAが出てから1年以上が経ち、つい先日とうとうMySQL 5.6 GAも出た昨今、これから先パーソナルユースでこれより以前のMySQLなど使うことはないだろうと~/.my.cnfを書いていたのだけど、昨日ちょっとしたアレでMySQL 5.1を入れたらMySQLが進化…

#cross2013 に行ってきた

聴いたやつ。 HTML5 x セキュリティ 体系的に学ぶ安全な利用規約の作り方 継続的サービス改善のゲンバのハナシ 継続的システム運用のゲンバのハナシ 感想など 出張Shibuya.XSSでCD-ROMをイジェクトしたくならない人は今すぐ病院に行ってくださいで有名な@has…

MySQL(InnoDB) で "Index column size too large. The maximum column size is 767 bytes." いわれるときの対策

tl;dr: MySQL 5.5.14以降だとinnodb_large_prefixオプションで3072バイトまでインデックス張れる MySQL(InnoDB)では、ひとつのカラムのキープレフィックスの最大値が767バイトという制限があるので、ついうっかりして Index column size too large. The maxi…

はてなブログ1周年おめでとう! id:hatenablog

はてなブログ1周年おめでとう! id:hatenablog はてなブログProに申し込むのに買ったポイントが中途半端に余るんですけど、どうにかならないんですか!よろしくお願いします。 はてなブログ1周年! ありがとうキャンペーンを開始します - はてなブログ開発ブ…

#isucon2 にて死す

当日を振り返った翌日の感想はコチラ。 昨日は藤原組と山形組の抗争に巻き込まれて無残に死んだ #isucon2— Ryuta Kamizono (@kamipo) November 4, 2012 今回もチームやすべえとして@riywoくんに熱烈ラブコールを送ってたんですが、当日は飛行機の上というこ…

Linuxと挙動がちがってて使いにくいOS Xのコマンド(top/ps/netstat)の代替

GNU/Linuxに慣れてると、よく打つtop/ps/netstatがOS X使ってるときにLinuxのそれと全然ちがう挙動で使いにくい。同じ挙動にするのman見ても無理そうなんで、なんとか同じように使えるのないか調べてみた。 top htopならLinuxとOS Xで同じように使えるのでht…

YAPC::Asia 2012 に行ってきた

今年も行ってきました! .@kamipoさんとドラ娘の2ショット!! #yapcasia @ YAPC::Asia Tokyo 2012 http://t.co/JdELQpTW— すぎゃーん ⌘ 9.30刹那ハレーション (@sugyan) September 28, 2012 僕も2ショット撮りたい!って言ったら何故かこうなった #yapcasia…

.railsrcにrails newするときのオプションを書いておける

Rails 3.2から~/.railsrcにrails newするときのオプションを書いておける。とりあえずテストはrspecつかうのといきなりbundle installしていらんので以下だけ指定してる。 # cat ~/.railsrc -T --skip-bundle

MySQL Casual Talks Vol.3 でスベってきました

MySQL Casual Talks Vol.3 : ATND おつかれさまでした!去る4月19日はこじはることAKB48小嶋陽菜の誕生日でした!先日の握手会でそのことに気づいてしまったので なにかこじはるネタでLTをしたいなということで Haruna storage engineというネタをやりました…

MacBook Airのセットアップ

買ってきたらとりあえずやる(やった)こと一覧。 システム環境設定まわり スクリーンをロック キーチェーンアクセス.appの環境設定で「メニューバーにキーチェーンの状況を表示」をチェック セキュリティとプライバシー 「スリープの後、またはスクリーンセー…

【知らないでは済まされない】Webエンジニアのためのデータベース技術[実践]入門

Webアプリケーションを運用しているエンジニアであれば、サービスの成長とともにデータベースの性能問題に頭を悩ませた経験が少なからずあるのではないでしょうか。データベースは、大量のデータを確実に保存してすばやく取り出せる魔法の箱ですが、種も仕掛…

Nokogiriのインストール

Nokogiriをビルドするのにlibxml/parser.hとかlibxslt/xslt.hが必要なのでいつもの方法でどのパッケージに含まれてるのか調べる。 $ apt-file search libxml/parser.h libxml2-dev: /usr/include/libxml2/libxml/parser.h lsb-build-desktop3: /usr/include/…

rbenvで入れたRubyで no such file to load -- net/https いわれるとき

VPSのUbuntuにrbenvでRuby入れていろいろしようと思ったら no such file to load -- net/https. Try running apt-get install libopenssl-ruby (LoadError)rest-client/lib/restclient.rb at master · rest-client/rest-client · GitHubっていわれたけど、ap…

自動化とか最適化とか

ふだん仕事とかで自動化とか最適化ってことばはあまり使わずに、省力化とか効率化ってことばを使うようにしてる。なんというか、思い描く本当に自動化された理想の姿からすればぜんぜん自動じゃないし、最も適したと書いて最適化だけど、いまの自分に考えう…

言わないように気をつけてることば

仕事の話をしてるときに「でも」っていわれるとめちゃくちゃむかつくので、少なくとも自分は「でも」って言わないようにしてる。 相手のいうことを否定するなら「でも」なんて使わずに率直に「それは間違ってる」「それは正しくない」と言って自分の考えを言…

テストってことばを使わないようにする

レガシーシステムにテストコードがないことはどこにでもよくある話だと思いますが いろんなところでテストと名のつくことばが出てくることでなんとなくテストしてる風のふいんきがかもし出るのが僕はずっといやだなーと思ってた。なのでテストといってる人が…

2011年の振り返りとかいろいろ

昨日はノースリーブス8thシングル「ペディキュアday」の個別握手会&ミニライブでした!ちょうど一年前の今ごろはみぃちゃんのこともAKBのこともノースリーブスのこともなにも知らなかったもので 僕の2011年のもっとも大きな出来事はみぃちゃんとの出会いと…

mysql-buildでいろんなバージョンのMySQLをインストールしたい!

これはMySQL Casual Advent Calendar 2011 - MySQL Casualの8日目の記事です! UDFでFizzBuzz id:sugyanさんがストアドプロシージャでFizzBuzzをやっていたのでMySQLのUDF(user-defined function)でもやってみました。 kamipo/mysql_fizzbuzz · GitHub git c…

かみぽよ

かみぽよ〜〜

YAPC::Asia 2011 おつかれさまでした

YAPC::Asia 2011 おつかれさまでした!今回は前夜祭のRejectConfと2日目のLTでトークをしてきました。 RejectConf 本当は難しいフレンド・タイムライン処理という話をしました。 この手の機能はWebのソーシャル系サービスなら必ずといっていいほど当たり前に…

チューニンガソンに遅刻して思ったこと

朝からピングドラム観てる場合じゃなかった…。前回のWordPressに引き続いて今回のMediaWikiも圧倒的なPHPのCPUバウンドなアプリケーションで、PHP 5.4をビルドした人が上位を独占でしたね。僕はといえば、PHP 5.4ビルドしたら負けかなと思ってnginxのproxy_c…

#isucon に参加してやったこと思ったこと

ISUCONに@riywoと「チームやすべえ」で参加してきたので、その感想です。ひと言でいうと、良くも悪くもみんな積み重ねてきたものが結果に出たのではないかなと思います。最初のボトルネックとして用意されていたクソクエリのチューニングは、二人ともDB寄り…

ext4でSSDのTrimコマンドをつかう

SSDはNANDフラッシュメモリの上書きができないという特性上、空き領域が少なくなると性能が落ちてくるし、以下略*1なわけですが、Trimコマンドで論理的に削除された領域をSSDに伝えることで性能の劣化を抑制する効果が期待できる。ext4ファイルシステムでTri…