本記事はPostgreSQL Advent Calendar 2019の7日目となります。 はじめに 私は普段PostGISを使っていますが、最近MySQL 8.0.xのGIS機能について調査する機会がありました。本記事は筆者が調査の中で気づいた両者の違いをまとめたものです。 PostGISは2.x〜3.x、MySQLは8.0.17を対象としています。 両者は共にOpenGIS1やSQL/MMなどの標準に基づく実装を進めているため共通している部分も多いものの、独自拡張や実装の違いによりいくつかの違いもあります。本記事の目的は両者の優劣をつけることではありません。 両者の違いを理解して、場面に応じた適切な使い方を選択するための一助となることが目的です。 所感本文に入る前に、私の所感を述べておきたいと思います。 まず、普段PostGISを使っている人が、MySQLのGIS機能に乗り換える

技術本部 サービスリライアビリティグループ(SRG)の長谷川 @rarirureluis です。 #SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。 またAmazonAuroraMySQL(以下:AuroraMySQL)の話です。何でこんなにAuroraMySQL に関する記事ばっか書いてるのか僕も分かりません。 前回のAuroraMySQL のアップグレード方法のベストプラクティスはこちらです。 RDS Graviton2 に少ないリスクで切り替える方法を考えてみる【アップグレード編】 |CyberAgent DevelopersBlog 今回はバックアップについてです。 そのクラスター、間違ったクエリ流したときに

ウィスキー、シガー、パイプをこよなく愛する大栗です。Auroraへ移行するお話を頂くことが増えてきました。そこでAuroraへの移行時における冗長化のポイントを考えてみました。 RDSのSLA定義はMulti-AZが前提である旨を追記しました。 そもそもMulti-AZって? ここではMySQLの場合のMulti-AZについて述べます。 Single-AZでは、以下の問題があります。 耐久性: ストレージボリュームで障害が発生した時には、「最新の復元可能な時刻」以降のデータ更新が失われる。 可用性: ハードウェア障害が発生した時に、インスタンスを再作成するため再接続までの時間が必要になるAuroraを除くRDSではストレージボリュームにEBSと同等のものが使用されているようなので通常のディスクに比べて高い可用性と信頼性を備えています。 補足すると、EBSについての具体的な数字としては「

ゴールデンウィークはいかがお過ごしされただろうか。今年は天気も良く、行楽日和が続いたように思う。 さて、先日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というバージョン番号を引っさげ、満を持しての登場となった。その

Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに やあ (´・ω・`) ようこそ、バーボンハウスへ。 このmysqlはサービスだから、まずsystemctl startmysqld して落ち着いて欲しい。 うん、「また」なんだ。済まない。 仏の顔もって言うしね、謝って許してもらおうとも思っていない。 でも、このタイトルを見たとき、君は、きっと言葉では言い表せない 「ときめき」みたいなものを感じてくれたと思う。 殺伐とした世の中で、そういう気持ちを忘れないで欲しい そう思って、この記事をかいたんだ じゃあ、注文を聞こうか。 というわけでmysqlをdisります。disるだけな

よくMySQLはゆるふわだから 値が勝手に切り詰められる エラーが起きずに変な値/日付が入る 不正なスキーマが入ってしまう など言われることがあります。ただそれは、そもそもの設定が悪いのです。(確かに昔デフォルトがゆるふわなのはいけなかったんですが) ということで、データベースには不正な値が入らないように設定はとにかく厳しくしておくのがオススメです。 じゃあどうするか。MySQLはSQL Modeによって、その辺りの制約をコントロールすることができます。以前、MySQLのsql-modeで一番厳しいやつはTRADITIONAL、というのを書いたのですが、実はそれだけでは不十分で、TRADITIONAL,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BYとするのがより安心なようです。 これはkamipoさんに教えてもらいました。 @songmu TRADITI

まずこんなテーブルを作るとします。ここに毎月10万件以上のレコードが入ってくる予定です。 1レコードが57byteなので、月に5.7Mbyte、プライマリーキーを入れると60Mbyteくらいが入ってきます。 年間にすると720Mbyteなので、まぁデータ量的には余裕だと思うのですが、 100万レコードを超えるとレスポンスが鈍化するという印象があります。 というわけで、MySQLにあるパーティショニング機能を使い、データを振り分けたいと思います。 【参考】DB設計時のサイズ見積もり | よねのはてな テーブル作成 注意する点として、パーティショニングのキーにしたいカラムを、プライマリーキーに含める必要があるようです。 なので、オートインクリメントのカラムがあるテーブルだと辛い。構成を考えなおした方がいいかも。CREATE TABLE `list_rtx` ( `member_id` var

MySQL には標準でレプリケーション機能が組み込まれており、下図の様なシステム構成とすることで、データの冗長化と参照処理の負荷分散を容易に実現できます。この構成では更新処理はマスタサーバで行うことになりますが、 参照処理は全てのサーバに分散して行えます。 ここでサーバの1台が何らかの障害で停止した場合を考えましょう。スレーブサーバの1台が停止した場合、マスタサーバや他のスレーブサーバで参照処理を継続できるため、停止したサーバへクライアントが参照クエリを送信しないように変更する必要はありますが、システム全体に大きな影響を与えません。 一方、マスタサーバが停止した場合、更新処理が停滞して業務継続に影響します。そのためマスタサーバは手厚く監視する必要があり、もしマスタサーバが停止した場合には業務を継続するため以下の作業が必要です。 最も最新に近い更新内容が反映されているスレーブサーバを選択し、
2ヶ月前にインフルエンザとウィルス性胃腸炎でひどくダメージを受けた増田(@masudaK)です。アメーバピグは2009年2月に始まったサービスで、FLASH・Javaで作られています。そして、データストアにMySQLを用いてます。本記事では、わたくしが2年ほど見続けているアメーバピグのDB環境について構成や、日々どのようにして問題と向き合っているかを紹介したいと思います。インフラ寄りの内容が多いため、アプリ寄りの話は弊社生沼の資料を御覧ください。 1. 構成と規模 1.1. 構成 まず構成ですが、読み書きはすべてマスターへ行うようにしています。そのため、スレーブには参照を向けず、ホットスタンバイとして使っています。バージョンに関しては2012年中旬までは5.0を使ってましたが、DC移転にあわせて5.5にあげました。ロック機能を用いたシャード構成をしてまして、2014年3月現在6シャードにな

おはようございます!INFITHVBA Lab管理人の藤原です。 先日Microsoft OfficeからMySQL ODBCが接続できないという恥ずかしい経験をしましたで今後の戒めのためにメモを残します。 あるシステムをお客様企業までセットアップに訪問した際の事です。システム構成はAccess2007をインターフェースにしてDBはMySQLを使ったクライアントサーバ型システムです。 プログラム開発もサクサク進み内部テストもOK。客先と同じWindows7の環境でも問題無し! さて現場に行ってサクっとセットアップするかと意気揚々と向かったのですが思わぬトラブルに遭遇。 テスト接続できるのにOfficeからODBC接続出来ない? ODBCが接続できない!? 何度見直してもデータソースも、サーバーネームも、ユーザーも、パスワードも、どう見ても正しい。 しかもODBCの画面からはテスト接続も問

平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識
DbNinja | OnlineMySQLdatabase manager タブUIが便利そうなPHP製MySQL管理ツール「DbNinja」。 ブラウザベースのMySQL管理ツールといえばphpMyAdminが定番ですが、DbNinjaはインタフェースが綺麗かつモダンで、タブUIを使ってテーブルを切り替えて便利に使えそうなのが特徴です。 ユーザの追加なんかにしても結構インタフェースが分かりやすくて良い感じです。SQLはシンタックスハイライトされたりします。phpMyAdminもいいのですが、「俺はDbNinja派」とかいうとカッコいいかもしれません。 とにかくかなり作りこまれているので一度ためしてみるとよさげです 関連エントリphpMyAdminクローラーの恐怖 1ファイルで動作する設置が超簡単なphpMyAdmin「Adminer」
MySQLでテーブルへのカラム追加、インデックス追加やテーブルの再編成などを行うと、その間テーブルに共有ロックがかかってしまいます。そのためこれらのメンテナンス処理は、通常利用者の少ない深夜早朝帯にサービスを止めて実施する必要があります。本日はそれを無停止、オンラインのままでできないかという話題です。 基本的なアイデア メンテナンス対象の元テーブルをコピーして、作業用の仮テーブルを作ります 仮テーブルに対して、カラム追加などの変更を加えます その間、元テーブルに対して行われる更新処理について差分を記録しておきます 仮テーブルの変更が終わったら、記録しておいた差分データを仮テーブルに反映します 差分データの反映が終わったら、元テーブルと仮テーブルを入れ替えます これと似たようなことを考えた方は結構いらっしゃるのではないでしょうか。ただ、言うは易し、行うは難しです。整合性がきちんと取れるかどう

こんにちはこんにちは。11インチMacBookAirが欲しくてたまらないiwanagaです。 前回の記事 が幸いにもご好評を頂けた様で非常にうれしいです。嬉しくなって、ついがんばって第2弾を書いてしまいました。引き続き、ソーシャルゲームでよく使われるテーブルタイプ毎にちょっとしたテクニックを紹介していきます。 今回はちょっとライトな感じ&読み物になってしまっていますが「ユーザID単位で1つだけ持つデータ」と「パラメータなどのマスターデータ」についてご説明したいと思います。ちなみに次回はInnoDBのデータ構造の簡単な説明と複合プライマリーキーのデータについて、その次で紹介し損ねたちょっとマニアックなテクニックや性能管理のための手法を紹介することを予定しています。 その前に。。。 先日行われた JAPAN INNOVATION LEADERS SUMMIT で弊社松信が「ソーシャルゲームの

mysqlには、レンジパーティションってものがありまして、うーなんでしょ?ある規則にしがったデータをおのおののデータファイルに振り分けてくれる機能です。 ・データ領域が分割されるため、大量のデータを処理することによる性能上のボトルネックの発生を抑えられる ・MyISAMなど、テーブルサイズに上限がある場合でもそれ以上のデータを格納することが可能になる といった点です、少ないデータですとこれといった利点はないかと思いますが、数百万規模データですと、このデータ分割が、大きな効果を呼ぶ。。かもしれないですし、そうでないかもしれません(汗 ただ、はっきりといえるのが、ある規則に従ったデータを、SELECTする際にそのSELECTで必要の無いデータまで、mysqlがシークする必要がないっていったところでしょうか?ただし、データをまたぐ検索が発生する場合は、パフォーマンスは非パーティションテーブルと比
MySQL ::MySQL 5.1 リファレンスマニュアル :: 15 パーティショニング http://dev.mysql.com/doc/refman/5.1/ja/partitioning.html 実験的にやってみただけでノウハウとして固まってはいないのですが、現状の知識をまとめてみたいと思います。 前提MySQL 5.1以降 検証した環境は5.1.47 日付ごとにパーティショニング カラムは一意な"id"と作成日付の"created"があるとする 準備 idとcreatedを複合でプライマリキーにする パーティショニングの条件はプライマリキーに含める必要がある idがAUTO_INCREMENTであればPRIMARY KEY (id,created)の順のみcreatedをTO_DAYS()してパーティショニングする 大枠と個別のパーティションの両方でTO_DAYS()す
#hbstudy11でid:marqsさんがMaatkitに関する発表をしていて,僕も仕事でちょこちょこ使っていたので ダイアリーあたりに書きますね と云ったきり,書く書く詐欺になっていたので,さすがに書こうと思います. 割とみなさん知っているツールだと思うのですが,ウェブ上で日本語の情報がなかなか見つからないので,何かのお役に立てればと思います.というか英語読めってことなのかもしれませんが. Mattkit 公式MySQL Tools and Management Software to Perform System Tasks by Percona Maatkitは「実践ハイパフォーマンスMySQL」の著者であるBaron Scheartzによって作り始められた,MySQLやPostgreSQLのようなオープンソースのデータベースのための高品質なコマンドラインツールです. 実践ハイパ

「優れたPerlプログラマを見分ける27の質問」の日本語訳というエントリが人気だったので、MySQL版をやってみた。題して、「優れたMySQLDBAを見分ける27+3の質問(漢バージョン)」。腕に覚えのある人はぜひ試してみて欲しい。MySQLのサーバープロセスはいくつある? rootユーザーのパスワードを忘れたときの回復手順MySQLをオンラインバックアップする方法を3つ。(もっとでも可) InnoDBのデータファイルが作成可能な場所はどこか。 InnoDBのデフォルトの分離レベルは? ネクストキーロックについて説明せよ。 ロールバックセグメントにはどのようなデータが格納されるか? InnoDBでデッドロックが発生したときの挙動、および詳細な状態を確認する方法。 MyISAMがサポートしている特殊なインデックス2つ。MySQLにおけるテーブル1行あたりの最大サイズ。 構成可能なレプ

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く