タグ

MySQLとmysqlに関するtaketsのブックマーク (136)

  • download

    DBeaver Community 24.2.4 Released on November 3rd 2024 (Milestones). It is free and open source (license). Also you can get it from the GitHub mirror. System requirements. DBeaver PRO 24.2 Released on September 9th, 2024 PRO version website: dbeaver.com Trial version is available. Windows Windows (installer) Windows (zip) Chocolatey (choco install dbeaver) Install from Microsoft Store Mac OS X Mac

    takets
    takets 2018/09/28
    windowsの良さそうなクライアント
  • つらくないマルチテナンシーを求めて: 全て見せます! SmartHR データベース移行プロジェクトの裏側 / builderscon 2018

    つらくないマルチテナンシーを求めて: 全て見せます! SmartHR データベース移行プロジェクトの裏側 / builderscon 2018

    つらくないマルチテナンシーを求めて: 全て見せます! SmartHR データベース移行プロジェクトの裏側 / builderscon 2018
  • サイボウズ版 MySQL パフォーマンスチューニングとその結果 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。先日親知らずを抜歯した時、つらすぎたので MySQLJOIN のことを考えて心の平静を保っていました。 サイボウズの製品のひとつである kintone はニーズに応じて自由に業務アプリのようなものを手軽に作ることができ、データの検索条件やソート条件も細かくカスタマイズ可能で、様々なレベルでのアクセス権も設定可能という非常に便利なツールです。 しかしその機能を支える裏側では複雑なクエリが発行され、MySQL に多大な負荷をかけています。サイボウズのクラウドには数十テラバイトに登る MySQL データがあり、数千万件オーダーのテーブルを複数 JOIN するクエリが毎秒のように実行されるという、エンジニア魂が滾る環境です。 現在サイボウズでは性能改善に力を入れており、僕もその業務に従事しています。例えば2018年

    サイボウズ版 MySQL パフォーマンスチューニングとその結果 - Cybozu Inside Out | サイボウズエンジニアのブログ
    takets
    takets 2018/08/15
  • インデックスが効くクエリ・効かないクエリ

    MySQL を使っていて、datetime 型のカラムにインデックスを追加する検証をしていたが、いまいちパフォーマンスが向上しない。クエリをみてみると WHERE 句に DATE 関数を使っているものは、追加したインデックスが効いていなかった。よく考えてみると当然だが、datetime 型のインデックスを違う型で検索することはできない。例えば DATE 関数を使ったクエリが多いのであれば、関数を適用したあとの値でインデックスを作成することも原理的にはできそうだが、MySQL は対応していなかった。 ググると、RDBMS 一般でインデックスが効く演算子のことを Sargable、そうでないものを Non-Sargable と呼ぶことがあるそうだ。 Sargable - Wikipedia, the free encyclopedia あまり広く使われている用語には見えないが、内容は納得のいく

    インデックスが効くクエリ・効かないクエリ
    takets
    takets 2018/07/19
    datetime型のインデックスについて
  • 【MySQL】約15万件のテーブルになってからクエリが遅くなりました。テーブル設計とクエリを公開しますのでアドバイスお願いしたいです。

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

    【MySQL】約15万件のテーブルになってからクエリが遅くなりました。テーブル設計とクエリを公開しますのでアドバイスお願いしたいです。
    takets
    takets 2018/07/11
    force indexの使い方
  • Devsの常識、DBAは非常識

    1. MySQL Admin が見た Devs の常識、 DBA は非常識 2013/09/14 yoku0825@MyNA PHP Conference 2013 2. \こんにちは!/ ● yoku0825 ● とある企業の DBA ● MySQL 歴 5 年くらい ● オラクれない ● ポスグれない ● 嫁の夫 ● せがれの父 ● 日 MySQL ユーザ会 (MyNA) のスベり担当 3. \しゃべること!/ ● 日常的に MySQL のソースコードに触れる変態 DBA がフツーの Devs に投げた愛のマサカリ集 ( のつもり ) ● ウチの開発言語は PHP > Java >> Ruby らしいです ● ウチでは DBA がサーバーの構築、 Devs が設計・ テーブル構築・運営、 DBA はトラブルシュートや改 善提案 ( 運用 ) 、というサイクルで回しています。

    Devsの常識、DBAは非常識
    takets
    takets 2018/07/11
    チューニングとか落とし穴がたくさん書いてある
  • やってはいけない!!MySQLに悲鳴をあげさせる10の方法

    いつも「MySQLを使うときはこうするべき」という観点から記事を書いているが、今日は逆に犯してはいけない過ちをリストアップしようと思う。 1. 全てのカラムにインデックスをつけるデータベース初心者がもっともやってしまいがちな間違いはコレではないだろうか。インデックスはいい。検索がとても速くなるから。しかし、それと引き替えにインデックスは更新するときにコストがかかるし、その分多くのディスクスペースを消費する。特に更新にかかるコストは時に甚大で、該当するインデックスのページがキャッシュ上にない場合はディスクからいったんそのページを読み込まなければいけない。ディスクアクセスは動作にとても時間がかかるので、インデックスが多数、例えば全てのカラムに付いていたりすると「あれ?固まったか?」というような状態になってしまうことがあるだろう。インデックスは必要なカラムにだけつけるようにテーブルを設計しよう。

    やってはいけない!!MySQLに悲鳴をあげさせる10の方法
    takets
    takets 2018/07/11
  • MySQLでJOINの高速化 | 勉強したことのメモ

    JOINで無茶苦茶悩んだのでメモ。やりたかった事は、MySQLで テーブルAには必要最低限のログが格納 テーブルBにはカテゴライズ情報が格納 AとBを組み合わせてカテゴリー毎に集計したい というもの。 あと難点として、テーブルAは200万件ほどデータが入っていて、尚且つサーバースペックが5年以上前のものらしくあまりよくないらしい。 で、最初に考えた案としては普通にJOINして、結果をWHEREで絞って集計。 SELECT SUM(aaa) FROM table_a AS a LEFT JOIN table_b AS b ON a.aaa = b.bbb WHERE ~~~ みたいな感じ。結合のキーは文字列。 1日毎の集計だと問題ないけど月間、年間で集計したら トラフィックがえげつないことになった。 かといってPHPで処理したらメモリ不足でタイムアウトが発生した。 上司相談したところ、DB

    MySQLでJOINの高速化 | 勉強したことのメモ
    takets
    takets 2018/07/11
  • データベース論理設計のアンチパターン - 夜は寝る

    おはこんばんちは。 がんばってブログを書きたいので、ちょうどいま読んでいるSQLアンチパターンというを、噛み砕いて離乳くらいの柔らかさにして晒してみます。すでに読んだ人はいますぐそっ閉じ、まだ読んでない人は、こちらも同様にそっ閉じしてお風呂に入ってすぐ寝ましょう。 SQLアンチパターン 作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型購入: 9人 クリック: 698回この商品を含むブログ (45件) を見る かなり圧倒的に当たり前のことしか書いてないんですけど、そういうこそが良書だっておじいちゃんの息子の息子が言ってた気がします。 アンチパターンが全部で25個、カッチョイイタイトルとともに紹介されています。「目的」「アンチパターン」「解決策」をそれぞれ示します。書だと、「アンとパターンを

    データベース論理設計のアンチパターン - 夜は寝る
  • 集計はRDBばかりに頑張らせるのをやめると幸せになれる。 - Qiita

    はじめに 各種のDB中の集計作業を行うにあたって、以下のようなデータをどうしても扱わなければならない場合は、SQLのみで完結させないことを検討しなければ、サーバリソースを大量に消費した挙句、何時まで経っても作業が完了しないということが有ります。 SQL操作だけに頼らないことを検討したい集計例 explainすることで大体の傾向はわかりますが、おおよそ以下のような要素を含む集計が対象となります。 対象のレコード数が巨大である(数百万レコード以上) DBの余剰リソースにもともと余裕が無い indexのふられていない項目で集計/joinしなければならない join対象の項目がやけに多い not in 巨大なサブクエリ is null group by like etc... ではどうするか? 集計対象のレコードを一旦ファイルに吐き出した上で、ファイルベースの処理をしてしまいましょう。 実践例1

    集計はRDBばかりに頑張らせるのをやめると幸せになれる。 - Qiita
    takets
    takets 2018/07/09
    ファイルに書き出すというのは考えなかった
  • MySQLでDBとテーブルのサイズを確認するSQL - Qiita

    SELECT table_schema, sum(data_length) /1024/1024 AS mb FROM information_schema.tables GROUP BY table_schema ORDER BY sum(data_length+index_length) DESC; SELECT table_name, engine, table_rows AS tbl_rows, avg_row_length AS rlen, floor((data_length+index_length)/1024/1024) AS allmb, #総容量 floor((data_length)/1024/1024) AS dmb, #データ容量 floor((index_length)/1024/1024) AS imb #インデックス容量 FROM information_s

    MySQLでDBとテーブルのサイズを確認するSQL - Qiita
    takets
    takets 2018/07/09
  • Using filesort

    去年ソートに関する記事を書いたが、今日はその続きである。 MySQLでEXPLAIN SELECT...を実行するとExtraフィールドでよく見かける「Using filesort」という文字列。Filesortって一体なんだろう?と思ったことはないだろうか。単刀直入に言ってFilesortの正体はクイックソートである。 クエリにORDER BYが含まれる場合、MySQLはある程度の大きさまでは全てメモリ内でクイックソートを処理する。ある程度の大きさとはsort_buffer_sizeであり、これはセッションごとに変更可能である。ソートに必要なメモリがsort_buffer_sizeより大きくなると、テンポラリファイル(テンポラリテーブルではない)が作成され、メモリとファイルを併用してクイックソートが実行される。 Filesortは全てのソート処理において実行されるわけではない。前回の記事

    Using filesort
    takets
    takets 2018/07/06
    実行計画の読み方
  • MySQL スロークエリのチューニング例

    概要 こちらのページの内容をもとに、具体的にクエリチューニングを行ってみます。 スキーマの用意 データベース作成 CREATE DATABASE mydb; USE mydb テーブルおよびインデックス作成 CREATE TABLE t1 (id INT PRIMARY KEY); CREATE TABLE t2 (id INT); ALTER TABLE t2 ADD INDEX myindex(id); CREATE TABLE t3 (id_md5 VARCHAR(32) PRIMARY KEY, myval INT); データの流し込み RAND 関数は引数の seed が同じであれば同じ結果を返します。 t1 i=1; while [ $i -lt 10000 ]; do mysql -uroot mydb -e " INSERT INTO t1 VALUES(CEIL(RAND

    MySQL スロークエリのチューニング例
    takets
    takets 2018/07/06
    create temporary table作成で一時テーブル作成できるとか初めて知った。便利そう(速度的にはどうなのか?)
  • MySQLのテンポラリテーブルの作成|プログラムメモ

    MySQLではサブクエリーの代わりにテンポラリテーブルを使います。 もちろんMySQL5からサブクエリーも使えるようになりましたが、テンポラリテーブルの方が速度が早いようです。 ● データのSELECTとテンポラリテーブルの作成を同時に行う CREATE TEMPORARY TABLE tmp1 ENGINE=MyISAM SELECT * FROM test_dt WHERE item_name like '%検索文字列%' ; ● あらかじめテンポラリテーブルを作成し、あとからデータを入力して、検索 CREATE TEMPORARY TABLE tmp SELECT 'buy'tablename,id,shop FROM buy; INSERT INTO tmp SELECT 'eat'tablename,id,shop FROM eat; INSERT INTO tmp SELECT

    takets
    takets 2018/07/06
  • MySQL勉強会 クエリチューニング編

    7. 1章 対話的にクエリを作る City:都市テーブル +-------------+------------+----------+------+-----+ | ColumnID | ColumnName | Type | Null | Key | +-------------+------------+----------+------+-----+ | ID | 都市ID | int(11) | NO | PRI | | Name | 都市名 | char(35) | NO | | | CountryCode | 国コード | char(3) | NO | MUL | | District | 地区 | char(20) | NO | | | Population | 都市人口 | int(11) | NO | MUL | +-------------+------------+

    MySQL勉強会 クエリチューニング編
    takets
    takets 2018/07/06
  • ヤフー社内でやってるMySQLチューニングセミナー大公開

    3. Yahoo! JAPANのRDB環境 • 11g RAC Enterprise Edition • 約200DB • サーバ 200台, Exadata もあるよ • MySQL 5.1 (RR,Mixed) Percona 5.5 (RR,Mixed) Percona 5.6 (RC,RBR,GTID) • 約500DB • サーバ 300台 Oracle Database MySQL Percona

    ヤフー社内でやってるMySQLチューニングセミナー大公開
    takets
    takets 2018/07/06
  • MySQL: クエリチューニングできますか? - あいつの日誌β

    追記あり 2013-02-25 innodb って Permissible Index Types が BTREE だったっていう あらすじ 流れのフリーランスやってるとよく面接行くはめになるんですが、そうすると大体「クエリチューニングの経験ありますか?」「これまでどういったチューニングしましたか?」とか聞かれます。 いつも思い出すのに苦労するので忘れないように問題にしておきました。 問題 以下のクエリが遅いので何かしらの対処を考えるように、とインフラチームから連絡がありました。何かしらの対処を考えなさい。 なお、type と delete_fg は常に等価であるかどうかのクエリしか発行しないものとする。 SEELECT count(*) FROM product WHERE type = 'N' AND delete_fg = 'N'; 現状ではプロダクトテーブルは以下のスキーマとなって

    MySQL: クエリチューニングできますか? - あいつの日誌β
    takets
    takets 2018/07/06
    クエリチューニング事例
  • MySQLでクエリチューニングことはじめ

    最近、寒暖の差が激しいですがみなさん体調は崩されていないでしょうか? こんにちわ。モニプラ for Facebookを担当しています高橋です。 サービス開始当初は問題なかったものの稼働が高くなりデータ量が多くなって クエリのパフォーマンスが悪化すること…よくありますよね? 今回はクエリチューニングの基的な手順とケース別に解決方法を解説したいと思います。 クエリチューニングの手順 1.スロークエリログで問題のクエリをあぶり出す まずはどのクエリが問題なのか特定する必要があります。 アプリケーション側でクエリの実行時間を測定し自前でログを出力しておくというのも手ですが、 お手軽にMySQLの設定で一定時間以上掛かったクエリをログに出力しておくことができます。 スロー クエリ ログ(MySQL 5.1 リファレンスマニュアル) mysqldを–log-slow-queriesオプションつきで起

    takets
    takets 2018/07/06
  • Granbridge.com

    takets
    takets 2018/07/06
  • MySQL スロークエリ改善 初心者向け - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationWhat you can do with signing up

    MySQL スロークエリ改善 初心者向け - Qiita
    takets
    takets 2018/07/05