チームメンバーの書いたクエリで見覚えのない関数が使われいたので調査。 MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.7 日付および時間関数 EXTRACT関数を使うとDATE値の結果から一部を抽出できる。 よく見るDATE_FORMAT関数を使うより文字列を解釈せずに必要な部分を抽出できるため早いらしい。 mysql> SELECT EXTRACT(HOUR_MINUTE FROM now()); +---------------------------------+ | EXTRACT(HOUR_MINUTE FROM now()) | +---------------------------------+ | 2353 | +---------------------------------+ 1 row in set (0.00 sec) mysql> S
ゴールデンウィークはいかがお過ごしされただろうか。今年は天気も良く、行楽日和が続いたように思う。 さて、先日MySQL 8.0が正式にリリースされた。少し時間が経ってしまったが、今回はMySQL 8.0の新機能について紹介したい。コミュニティ版のダウンロードはこちらから可能だ。 ひとつ前の正式バージョンはMySQL 5.7だったのだが、MySQL 8.0は非常に大きなリファクタリングが含まれており、5.x台のバージョン番号を捨て去ろうという話があった。そこで、次のメジャーバージョンは最初の桁を増やすということになったのだが、MySQL 6.0は過去に既に存在し、買収などの騒ぎで開発が頓挫してしまった経緯がある。7.xはMySQL NDB Clusterと被っている。というわけで、5.7の7の部分の次という意味合いもあって、8.0というバージョン番号を引っさげ、満を持しての登場となった。その
仕事やらなんやらでMySQLのクエリの良し悪しを判断する必要があるとき、EXPLAINの内容だけだとどのぐらい良くなったり悪くなったのか分からないので SET long_query_time = 0; してrows_examined (そのクエリでrows_sent行の結果を返すために何行に触ったのか)も一緒に提示するようにしている(少なくともMySQL 5.7時点ではrows_examinedはslow_query_logでしか確認できないはずperformance_schemaが有効ならevents_statements_historyやその仲間たちで確認できるとのこと*1 MySQL :: MySQL 5.6 リファレンスマニュアル :: 22.9.6 パフォーマンススキーマステートメントイベントテーブル)。 例: 上の例のBeforeは、もともとDBAが書いた温かみのあるSQLでO
ずっと前から積ん読状態だった「SQLアンチパターン」を読みました。 何年積んでたか分からないSQLアンチパターン読み終わったー。噂に違わずいい本ですねー。もっと早く読むべきだった。— @ketancho (@ketancho) 2018年3月6日 噂通りとても良い本で、まさに「エンジニアとしての血肉本」と言えます。1, 2年目の頃に読んでおくべきだったなーと少し後悔しています。 SQLアンチパターン 作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型本購入: 9人 クリック: 698回この商品を含むブログ (46件) を見る 読んで終わりだと身につかないと思うので、自分なりのチェックポイントを言語化しておこうと思います。長くなってしまったので、章ごとに4つに分けたいと思います。この記事はその第一弾と
MySQLのデータ型としてFLOAT型という型があるのですが、これを採用するのは混乱の元ではないか?と感じたので、その詳細を紹介します。 そもそもこの話のきっかけは「MySQLで6桁までの小数点を丸めずに扱うならFLOAT型を使うべき理由」という記事が目に止まったことです。それなりに人気を集めている記事のようですが、私の読んだ限りではFLOAT型を使うだけの根拠が文中から読み取れず、さらに類似する一次情報や英語記事が全く見つからなかったので、真偽が怪しい情報だと感じました。 その後、MySQL上で実験したりCソースコードを読んでみたりした結果、私の得た結論は真逆のものになりました。MySQL警察の方や浮動小数点数警察の方、追試や反論など頂けると助かります。 MySQLのFLOAT型とは MySQLのFLOAT型は原則としてIEEE754浮動小数点数単精度型(32bit)で実現されます*1。
TL;DR; Amazon AuroraはIn-Memory DBでもなくDisk-Oriented DBでもなく、In-KVS DBとでも呼ぶべき新地平に立っている。 その斬新さたるやマスターのメインメモリはキャッシュでありながらWrite-BackでもなくWrite-Throughでもないという驚天動地。 ついでに従来のチェックポイント処理も不要になったのでスループットも向上した。 詳細が気になる人はこの記事をチェキ! Amazon AuroraはAWSの中で利用可能なマネージド(=運用をAWSが面倒見てくれる)なデータベースサービス。 ユーザーからはただのMySQL、もしくはPostgreSQLとして扱う事ができるのでそれらに依存する既存のアプリケーション資産をそのまま利用する事ができて、落ちたら再起動したりセキュリティパッチをダウンタイムなしで(!?)適用したりなどなどセールストー
PostgreSQLとMySQL、使うならどっち? データベース専門家が8つの視点で徹底比較! オープンソースのデータベースとしてよく比較されるPostgreSQLとMySQL。どんな長所・短所があるのでしょう? それぞれの専門家による対談で明らかにします。 エンジニアとして働いていると必ず直面する悩み。それは、「どのリレーショナル・データベース(以下、RDB)を選ぶのが最善なのか?」です。 RDBごとに長所と短所は異なっています。そのため自社サービスにマッチしないRDBを選んでしまうと、それがボトルネックとなり開発・運用にトラブルが生じるケースは少なくありません。 なかでもよく比較検討されるのが、PostgreSQLとMySQL。ともにオープンソースRDBのデファクトスタンダードであり、高い性能と数多くの機能を持っています。 では、両者は具体的にどのような長所・短所があるのでしょうか。そ
InnoDBの行の最大長は約8KBらしい。 意外と少ない。。。 運用中のサービスがこんなエラーを吐いていました。。。 [code gutter=”false”] Got error 139 from storage engine [/code] マジですか。これが噂の「InnoDB 8KBの壁」ですか。。。 設計段階であればテーブル縦分割とかテーブル構造自体を変えちゃえ!ってなるかもしれないですが、運用中のサービスですし、できるだけ全体へのインパクトは少なくしたい(アプリケーションは改修したくない)。って時にテーブルのROW_FORMATを変更して対応しましたよ、って話です。 「ROW_FORMAT=DYNAMIC」または「ROW_FORMAT=COMPRESSED」を使おう! そうです、結論から言ってROW_FORMATを変更することで対応したんです。 ROW_FORMATについてMyS
mk-mode.com Linux, Debian, IT, Server, PG, Ruby, Rails, Python, C++, Fortran, PC, MariaDB, math, GIS, etc... MySQL でストレージエンジンに InnoDB を指定していると、データファイル・ログファイルが作成されます。 デフォルトでは、データファイル(ibdata1)はデータベースが複数あっても1つのファイルとして作成されます。 これだと、データベースが複数あったりサイズが膨大になったりすると、パフォーマンスが悪くなるだけでなく管理も煩雑になってしまいます。 設定ファイルに innodb_file_per_table を設定することで、このデータファイルをテーブル単位で管理できるようになります。 ただ、既にデータベースを InnoDB で運用している場合は、今後作成するテーブルに
InnoDBのibdataファイルのサイズは、放っておくと相当肥大化してしまう。10G、20Gなんてフツーにいってしまう。30Gくらいになる例もある。もっと大きくなろうと思えばなれるんだろう。まったく怪物みたいなヤツだな・・・。 と、いうわけで、通常のibdataファイルを複数表領域にしてみる。複数表領域にするときのパラメータはinnodb_file_per_table。通常のibdataファイルでDBが稼働している状態から、複数表領域に変更するときの手順メモ。詳しい仕様の話は割愛させていただく。早く寝たいので。 以下、my.cnfの記述例一部。複数表領域に変更してもibdataファイルは消えない。autoextend:max:4096Mなどと記述することでサイズを制限しておく。 innodb_data_file_path = ibdata1:100M:autoextend:max:409
Photo by Linux Screenshots こんにちは、谷口です。 あなたの会社ではSQLを使える人の割合はどれくらいでしょうか? ITエンジニアであれば多くの人が日頃から使っているSQLですが、それ以外の職種では「SQLを使えないので、データがほしいときはエンジニアにお願いしている」という人も多いかと思います。 ただ、自分でSQLを使えないと、今すぐデータがほしいのに確認できるまで時間がかかったりして不便なことも多いですよね。また、エンジニアにとっても、開発中にちょっとしたデータ取得がいくつも差し込まれたり、「データが思っていたのと違った」と言われてやり直しになったりするのはストレスになってしまいます。 paiza社内でも、かつてはそんな状態でしたので、社内で非エンジニア職向けにSQLの勉強会を実施するようになりました。現在は、営業・企画・事務局など、さまざまな職種の人たちも自
結論から、mysqlのint(11)のカッコ内の数値は意味がありません。 まず以下の2点をおさえてください。 ・int(8)のカッコ内の数値は桁数である(バイト数ではない)。 ・int(8)としても、記憶領域を変えることは出来ない(intは10桁、tinyintは3桁)。 ということです。 ですので、int(11)としても、10桁しか入りません。 ただ、UNSIGNED ZEROFILLを付けたとき、0を補完する桁数としてはカッコ内の数値は意味を持ちます。 例えば、int(8)でUNSIGNED ZEROFILLのとき、111と入力すると、 00000111 となります。 テーブル設計時のお役にたてば幸いです。
はじめに やあ (´・ω・`) ようこそ、バーボンハウスへ。 このmysqlはサービスだから、まずsystemctl start mysqld して落ち着いて欲しい。 うん、「また」なんだ。済まない。 仏の顔もって言うしね、謝って許してもらおうとも思っていない。 でも、このタイトルを見たとき、君は、きっと言葉では言い表せない 「ときめき」みたいなものを感じてくれたと思う。 殺伐とした世の中で、そういう気持ちを忘れないで欲しい そう思って、この記事をかいたんだ じゃあ、注文を聞こうか。 というわけでmysqlをdisります。disるだけなので内容はありません。いいね? mysql には罠がいっぱい そうなんですよ罠がいっぱいなんですよ奥さん。 いやこれはおそらくmysqlに限った話ではないんですけど例えばこういうの! MySQLのチューニングなんてしたらパフォーマンス落ちるだけだし、デフォル
BdashというアプリケーションをElectronで作りました。 bdash-app/bdash: A simple business intelligence application. 以下からダウンロードしてインストールできます(現状まだMac版だけ)。 https://github.com/bdash-app/bdash/releases ざっくりとこんな感じのことができる。 SQLを書いて保存&実行できる 結果を元にグラフを書ける gistで共有できる 現状で対応しているデータソースはMySQL、PostgreSQL(Redshift含む)、BigQuery 仕事でRedshiftを使って分析SQLを書くことが増えて、手元ではJupyter Notebookを使ってたんだけど、SQL書いてグラフを書くだけの用途には若干オーバースペックでもうちょっと簡単にできるといいなと思ったのがき
果たしてGitLab.comで何が起きたのでしょうか? これまでの経緯をまとめました。 スパムによるトラフィックのスパイクからレプリケーションの不調へ GitLab.comは今回のインシデントについての詳細な経過を「GitLab.com Database Incident - 2017/01/31」で公開しています。また、もう少し整理された情報がブログ「GitLab.com Database Incident | GitLab」にも掲載されています。 これらのドキュメントを軸に、主なできごとを時系列に見ていきましょう。 1月31日16時(世界協定時。日本時間2月1日午前8時)、YP氏(Yorick Peterse氏と思われる)はPostgreSQLのレプリケーションを設定するためにストレージの論理スナップショットを作成。これがあとで失われたデータを救う幸運につながります。 1月31日21時
SQL、書いてますか? こと大規模データ処理の分野においてはSQLはもはや標準インターフェイスであり、 分析やらバッチやらに関わっている皆様は日々大量のSQLクエリーを生産していることと思います。 そこでちょっと気になるのが、 SQLのコーディングスタイルってどうするのが一般的なんだっけ……? という点です。 イマドキはSQLなんてO/R mapperに吐かせることが多いからなのか、 それともコードを広い範囲で共有することがそもそもないからか、 SQLのコーディングスタイルについて見聞きすることは他のプログラミング言語に比べるとだいぶ少なく、 いまいち決定版と言えるスタイルがないなと感じています。 そんなわけで本日は、SQLのコーディングスタイルについての意識を活発化させるべく、 クックパッドでわたし(青木)が使っているコーディングスタイルから特徴的な点を紹介したいと思います。 特に、分析
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く