タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

mysqlに関するyasuharu519のブックマーク (22)

  • オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank

    こんにちは。MySQLは秋の季語とする一派が世に存在していることを知り、私もMySQLに関わる記事を書いてみようと筆を取ることにしました。 さて、リレーショナルデータベースをバックエンドとするWebアプリケーション開発において、特定の条件に合致するレコードがN件だけ存在するかどうかを確認するロジックは頻出といえます。プログラマとして一度は書いたことがあるのではないでしょうか? この記事ではそのような件数カウントを行うためのクエリが引き起こした性能劣化と、その改善アプローチについて紹介していきます。 なお、記事の内容はMySQLを前提としており、アプリケーションコードの例はRuby on Railsを用いますが特別な前提知識は必要ありません。コードの雰囲気だけ感じ取っていただければと思います。 ありがちなコード if query.count == n の問題 冒頭で述べた通り、特定の条件に

    オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank
  • MySQLアーキテクチャ図解講座

    7. ストレージエンジンによる テーブルスキャンの例 ha_tina::store_lock ha_tina::external_lock ha_tina::info ha_tina::rnd_init ha_tina::extra - ENUM HA_EXTRA_CACHE Cache record in HA_rrnd() ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::extra - ENUM HA_EXTRA_NO_CACHE End caching of records (def) ha_t

    MySQLアーキテクチャ図解講座
  • MySQL入門 レプリケーション編 - Qiita

    #経緯 とある勉強会の内容の復習&整理 #タイトル インストール・アーキテクチャ基礎編 レプリケーション編 ←今回はこちら バックアップ編 チューニング基礎編 #レプリケーション編 アジェンダ レプリケーションとは レプリケーションの仕組み レプリケーションの種類 レプリケーションの設定方法 バイナリログの管理方法 その他の考慮事項 参考情報 #1. レプリケーションとは ##1.1. 基礎知識 データの複製(レプリカ)を別のサーバにモテる機能 MySQLの標準機能で、多数のWebサイト等で利用されている - シンプルな設定で利用可能 - マスター → スレーブ構成 ##1.2. マスタースレーブ構成 サーバはマスター、スレーブまたは両方になれる マスターサーバ - データを変更 - 変更内容をスレーブに転送 - マスターは複数のスレーブを持てる スレーブサーバ - マスターでの変更内容を

    MySQL入門 レプリケーション編 - Qiita
  • Dockerの公式MySQLイメージの使い方を徹底的に解説するよ · DQNEO日記

    DockerHubでは公式のMySQLイメージが無料で公開されています。 これを使えば簡単にDockerMySQLサーバを起動することができます。データの永続化もできます。 https://hub.docker.com/_/mysql/ 2015年10月現在では下記3種類のバージョンが用意されています。 タグを指定することで任意のバージョンのイメージを取得できます。 5.5 5.6 5.7 (latest) イメージの取得方法 docker pull mysql これで最新の安定版を取得できます。 バージョンを明示的に取得したい場合はタグを使います。 docker pull mysql:5.7 (2015/10/25現在だと、mysql, mysql:latest, mysql:5.7, mysql:5.7.9はどれも同じイメージを指します。) これのDockerfileを見たい場合はこ

  • 『オンラインで安全にスキーマ変更可能なpt-online-schema-change』

    Amebaのソーシャルゲーム全般のインフラを担当しつつ賃貸マンションの間取りを眺めたり、 戸境壁の工法による防音性の違いについて日夜研究しています。 いつかD値が60以上のマンションに住みたいです。

    『オンラインで安全にスキーマ変更可能なpt-online-schema-change』
  • サーバーがUTCなのでMySQLのタイムゾーンが気になって調べた | kanonjiのブログ

    AWSのサーバーを使うようになって、あまり気にしてなかったMySQLのタイムゾーンが気になるようになってきました。 というのも、今やってるプロジェクトでは、AWSのインスタンスに入れたOS(Linux)のタイムゾーンは、UTCのままにしておく事に決まっていて、そうするとMySQLのタイムゾーンもUTCのままの方が良さそう。もしかしたらタイムゾーンの変更が出来ないAmazon RDSのMySQLを使うかもしれないし。 なので、ちょっとMySQLのタイムゾーンがUTCだとどうなるか、調べてみました。 Amazon RDS for MySQLでタイムゾーンを設定するのはやめたほうがいいかもしれない – Qiita ちなみに、Amazon RDS(MySQL)のタイムゾーンの変更は、一応いくつか方法があるみたいだけど、トラブルの元にもなるみたいなので、UTCのままで使う方を検討した方が良さそう

  • MySQL 5.7のJSON機能を試してみる(MySQL Server Blogより) | Yakst

    MySQL 5.7から使えるようになったJSON機能の利用例に関するMySQL Server Blogのブログ記事を紹介します。 免責事項 この記事はMorgan Tocker氏によるMySQL Server Blogの投稿「Taking the new MySQL 5.7 JSON features for a test drive」(2016/3/2)をユーザが翻訳したものであり、Oracle公式の文書ではありません。 MySQL 5.7からネイティブのJSON型と、サーバーサイドでデータを操作や検索を自然に行えるようにする一連のSQL関数が使えるようになりました。日、SF OpenDataにあるサンプルデータを使って、これらの機能の簡単な利用例をご紹介したいと思います。 サンプルデータをインポートする 良いサンプルデータを使うことは、結果が正確であることを自身で確認するのに役立つた

    MySQL 5.7のJSON機能を試してみる(MySQL Server Blogより) | Yakst
  • MySQLでカジュアルにズンドコキヨシ | GMOメディア エンジニアブログ

    こんにちは、DBAです。 ズンドコキヨシ大流行ですね。 ズンドコキヨシまとめ - Qiita を見ていたんですが、MySQLでやってる人はいなさそうなので MySQL CasualのSlack で呼びかけてみました。 * by @do_aki 。JOIN使ってる。確かに止められない。SET @zd = ''; SELECT zundoko FROM ( SELECT @t := IF(@zd = 'ズンズンズンズンドコ', 'キヨシ!', ELT(FLOOR(1 + RAND() * 2), 'ズン', 'ドコ') ) AS zundoko, @zd := RIGHT(CONCAT(IFNULL(@zd,''), @t), 10) FROM (SELECT 0 UNION SELECT 1) AS t0 JOIN (SELECT 0 UNION SELECT 1) AS t1 JOIN (

  • MySQLの新しいInnoDB ページI/O圧縮機能について解析してみた

    InnoDBにはデータの圧縮機能がありますが、パフォーマンスが低いことからあまり使われていません。ただ今年の Percona Live で Oracle MySQL, MariaDB, そして Percona Server が新しい InnoDB Compression を出してきました。これはFusion-ioの R&D チームがフラッシュストレージ向けの MySQL 高速化の一環で開発したパッチが元になっています。ちなみに私は Fusion-io の社員ですのでこの発表をワクテカして待っていたのですが、折角コードが一般にリリースされたので、ソースコードを眺めて動作を調べることにしました。 参考にしたのは MySQL Server Snapshots (labs.mysql.com) にあるMySQL with InnoDB PageIO Compression のソースコード、およびM

  • MySQLの「ALL権限」のレベル - なからなLife

    なにがどう違うの! GRANT ALL PRIVILEGES ON *.* TO 'ユーザ'@'%'; GRANT ALL PRIVILEGES ON `%`.* TO 'ユーザ'@'%'; 前者は「グローバル権限」、後者は「データベース権限、ただし、全データベース」。 権限のスコープレベルをデータベースレベルに落としているのに、「%」つまり全データベースに対して許しているので、データベースレベルで可能な権限はすべて使える。「ほとんど」なんでもできちゃう? だ・か・ら!何が違うの? まずは atsuizo.hatenadiary.jp のおさらい。 MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.7.1.4 GRANT 構文 に一覧がありますが、権限によってグローバルレベルで付与できるもの、データベースレベルで付与できるが違います。 これをもう少し噛み砕くと、以下

    MySQLの「ALL権限」のレベル - なからなLife
  • MySQLレプリケーションの運用が劇的変化!!GTIDについて仕組みから理解する

    メリークリスマス!!やあ、良い子のみんな!!サンタクロース・・・ではなく、ヒゲモジャギークからのクリスマスプレゼントだよ!! というわけで、MySQL Casual Advent Calendarの25日目である。今朝Advent Calendarを覗いてみると、日分のエントリーが無かったので、急遽書くことにした。Advent Calendar最後の日、クリスマスを飾る記事のテーマはGTIDだ。 前回の投稿では、MySQL 5.6の目玉機能として、レプリケーションがクラッシュセーフになったことを挙げた。レプリケーションまわりで言えば、もうひとつ外せない目玉機能がある。それがGTID(Global Transaction ID)である。 GTIDは良くも悪くもレプリケーションの運用を変化させる。GTIDを使うことによって得られる最大のメリットは、CHANGE MASTER TOでバイナリロ

    MySQLレプリケーションの運用が劇的変化!!GTIDについて仕組みから理解する
  • MySQLのCollationを理解するためにまとめてみた。

    Collation… MySQL独特の仕様、Collationがあまりしっくりこなかったので理解するためにまとめてみました。 テーブルJOINしようとして、たまにCollationちげーよ!とか言われるアレです。 ERROR 1267 (HY000): Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=' Oh... Collation とは? 直訳すると照合。 文字コード毎の照合順序を定義します。 大雑把に言ってしまうと。 MySQLは文字コードとソート順を持っていて、ソート順の部分がCollationとよばれている。(文字コードの部分はCharacter Set) 比較するときには文字コードだけでなくてCollationが一致するかどうか

  • MySQLをmaster:slave=1:1構成にして参照をslaveに向けるのがなぜ良くないか - 酒日記 はてな支店

    MySQLのmasterとslave 1:1にして参照をslave向けるのってやりたがる人多いみたいだけど、性能たいして上がらない割に可用性落ちるだけだからやめようキャンペーン 2011-06-19 00:16:30 via YoruFukurou MySQL はレプリケーションが簡単に構成できるのですが、時折 master 1台 に対して slave 1台、更新処理は master に、参照は slave に、という構成を目にします。 個人的にはこの構成はお勧めでないと思っているので、その理由を考察してみます。 1. 可用性が落ちる 当然ですが、master, slave のどちらが落ちても影響を受けるために可用性が低下します。 2. 全体の性能がほとんど上がらない master 1台ですべてのクエリを処理する場合と比べて、可用性が落ちる引き換えとして見合った性能向上が得られるか、という

  • MySQLの権限と付与状況の「見え方」 - なからなLife

    グローバル権限、データベース権限、テーブル権限など Oracleではシステム権限とオブジェクト権限(と、SYSDBAなどの特殊権限)に別れるように、MySQLも権限のレベルがあります。 Oracleでいうところのシステム権限は、MySQLでグローバル権限、とおぼえてほぼ間違いないかと。 権限付与は、SQLお約束のGRANT文で。 GRANT 権限種類 [(カラム)] ON データベース.テーブル TO 付与対象ユーザ [WITH GRANT OPTION] ここで、 データベース:sampledb テーブル:sample_tbl カラム:col1,col2, ... といった構造がある場合、GRANT文は以下の様な感じ。 権限種別 GRANT文 グローバル権限 GRANT 権限種別 ON *.* TO ... データベース権限 GRANT 権限種別 ON sampledb.* TO ...

    MySQLの権限と付与状況の「見え方」 - なからなLife
  • .my.cnfでMySQLへのログインを自動化する方法

    mysqlコマンドを叩いて、mysqlと対話することがよくありますが、 mysqlコマンドを起動するたびに、パスワードを入力しなければならないので、 とても面倒です。 設定ファイル .my.cnfをホームディレクトリに作成することで、 mysqlへのログインを自動化することができます。 touch $HOME/.my.cnf chmod 600 $HOME/.my.cnf vi $HOME/.my.cnf [client] host=localhost database=login user=login-user password=login-password ログイン方法 mysql -u login-user これでパスワードの入力をせずにログインすることができます。 スポンサーリンク

  • やってはいけない!!MySQLに悲鳴をあげさせる10の方法

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

    やってはいけない!!MySQLに悲鳴をあげさせる10の方法
    yasuharu519
    yasuharu519 2016/01/15
    参考になる
  • MySQL運用が長くなってきたときに気をつけたい2つのポイント - Around the World

    この記事はCyberAgent エンジニア Advent Calendar 2015の18日目の記事です。 記事のアップが大幅に遅延してしまったことをお詫び致します。。。 www.adventar.org 今回はMySQLの運用が長くなってきたときによく起こりがちな問題と対策を2つ記します。 増加するデータ容量 運用が長くなればなるほど、おおよその場合データ容量は増え続けます。 さらにInnoDBの場合、レコードをDeleteしてもデータ容量自体は減りません。 Deleteしたあとはテーブルをオプティマイズしましょう。 > DELETE from sample_table WHERE update_datetime < '2014-12-24 00:00:00' LIMIT 100000; > ALTER TABLE sample_table ENGINE=InnoDB; 削除件数が少なか

    MySQL運用が長くなってきたときに気をつけたい2つのポイント - Around the World
  • 第7回 スロークエリーログを使って遅いクエリを収集する | gihyo.jp

    最近ではPaaS型のクラウドがかなり普及しており、サーバを自分で用意しなくても簡単にサービスを公開できるようになりました。そのため、自分向けの便利サービスなどを作っている人も多いのではないかと思います。しかし、サービスの初期段階だとうまく動いていた機能が時とともに、だんだんと重くなっていき使いにくくなることもあるかと思います。 そんな時には、データベースに限った話ではありませんが、チューニングをしよう!と考えるかと思いますが、どこをどのようにチューニングすれば高速化が見込めるかは、しっかりと計測してみないとわかりません。当てずっぽうにチューニングした結果、実はあまり関係がなかったということもあるかと思います。 そこで、今回はMySQLに簡単な設定をすることで遅いSQLを記録するためのスロークエリーログを有効にして、チューニングのために必要な情報を収集できるようにしたいと思います。 デモンス

    第7回 スロークエリーログを使って遅いクエリを収集する | gihyo.jp
  • MySQLのクエリ集計手法いろいろ | Ore no homepage

    Webサービスを開発/運用してるモンとしては、いろんなWebサービスを触ってみなきゃアカンってことで、アメリカの若モンに大人気ってふれこみのsnapchatに登録してみた。これでリア充の仲間入りやと思ったが、snapchat友達が同僚二人しかいないうえに、利用シーンがあまり思い浮かばないww オジサン困っちゃいました。画像とか送信できるんだけど、数秒で消えるの。むしろそこがウリっていうね。どうやって遊ぼうか…。 2月はブログ書かなかったなーと思ったのでMySQL小ネタ。世間的にも自分的にも真新しくもなんともないTipsです。 innotopで集計 実は以前、Qiitaに書いたので↓をば。。。 http://qiita.com/la_luna_azul/items/505ca441b8c8e6a87aaa 流れるクエリ、ロックの状況、トランザクション(show engine innodb s

    MySQLのクエリ集計手法いろいろ | Ore no homepage
  • 『MySQL初心者に贈るインデックスチューニングのポイントまとめ2014』

    サイバーエージェント公式ブログをご覧の皆さんこんばんは、インフラ&コアテク部の須藤(@strsk)です。普段はAmebaのソーシャルゲーム全般のインフラを見つつ、日語ラップの啓蒙をしながら弊社社員を素材にコラ画像をつくったりしています。好きなAAは麻呂です。 はい、というわけで今回はMySQLインデックスチューニングの基的な流れについてまとめてみました。 ソーシャルゲームは更新も参照もめちゃくちゃ多いです。数秒のレプリケーション遅延も致命的なので適切なテーブル、クエリとインデックス設計が重要です。(何でもそうですけど)インデックスが多くなると更新コストなどが懸念されますが、インデックスが正しく使われていないクエリを放置している方が悪です。そんなこんなで、割と例も偏ったりしてるかもしれませんがあしからず。 前提としてはInnoDBを想定しています。MyISAMはほとんど使っていません。

    『MySQL初心者に贈るインデックスチューニングのポイントまとめ2014』