2019年12月5日(木)に開催された「MySQL Technology Cafe #6」での発表資料です。 https://oracle-code-tokyo-dev.connpass.com/event/147283/
![MySQL 8.0 GIS機能チュートリアル](https://cdn-ak-scissors.b.st-hatena.com/image/square/84e3ba4add577036f2fb602d2b7451d5c3289781/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fbb9c1378983844f385630f1dcfa7dfd3%2Fslide_0.jpg%3F14530653)
DBサーバーのディスク容量の空きが少なくなり、不要なテーブルを削除することになりました。 対象のテーブルのデータ量が多く、平常時でもそこそこ負荷のあるサーバーなのですが、 テーブル削除だけのためにメンテナンスをするのもアレなので、 深夜帯にしれっとdropしたい気持ちを抑えつつ、負荷のかからないdrop tableの手順を試してみました。 サービス稼働中にテーブルdropする時の問題点 metadata lock drop対象のテーブルに書き込みやトランザクションが貼ってあるとmeta data lockがかかってしまいます 今回は参照等がないテーブルなので、問題なし 巨大なファイルを削除するとI/O待ちが発生する 巨大なテーブルのデータファイルを削除すると他のプロセスがI/O待ちになる可能性があります 安全にテーブルdropするには 完全にこちらを参考をさせて頂きました。 負荷の高いMy
こんにちは。@onunuです。本記事はMySQL casual AdventCalendar 17日目の記事です。 本記事ではMySQL8で大幅に強化されたGISデータ周りのtipsについて触れたいと思います。ある程度尽くされた話題ではありますが、主にアップデートされた機能について言及していこうと思います。みなさまの快適なMySQLライフの一助になれば幸いです。 なお、各所にある例や参考のクエリは以下の環境で確認しています。 また記事の内容に誤りがございましたら、コメント欄かTwitterなどのDMにてご教示いただけますと幸いです。 GISデータとMySQL MySQLにおけるGISデータ GIS(Geographic Information System)とは地理情報や空間に関するデータをコンピュータ上で取り扱うためのシステムをさします。MySQLはOGC(Open Geospatial
【MySQL】Geometry型で位置情報(座標)を扱うMySQLで位置情報(座標)を扱う場合には、Geometry型という便利な型があります。 Geometry型のカラムには、GeomFromTextでデータを作成して保存することになり、 以下の様な形式でSQLクエリを組み立てます。 INSERT INTO テーブル名 (カラム名) VALUES (GeomFromText('POINT(経度 緯度)')); ※経度と緯度の間は、半角スペースで区切ります。 例えば、 テーブル名「tbl_location」、カラム名「latlng」とすると、このようなSQLクエリを実行することになります。 INSERT INTO tbl_location (latlng) VALUES (GeomFromText('POINT(139.767125 35.681236)')); ここまでは問題ないですね。
今回から2回に分けて、位置情報をDatastoreに格納する方法をいくつか紹介します[1]。 数値型で保存する 緯度経度の情報をデータベースへ格納するときに、もっとも簡単な方法が数値型として保存する方法です。緯度経度がとりうる値の範囲は、以下の通りですので、システムに必要な小数点以下の数字を考慮して型を決めましょう。 はてなフォトライフでは、写真に緯度経度のメタ情報を設定することができますが、高精度な緯度経度情報は必要ないので、型を以下のように指定しています。 latitude decimal(7,4) longitude decimal(7,4) decimal(7,4)という指定は、10進数で7桁のデータで、小数点以下は4桁まで格納するというものです。 あるオブジェクトの緯度経度を保存し、表示するだけならこれだけで十分ですが、位置情報を中心に扱うサービスになると、格納したデータを緯度
このテーブルのように浮動小数点を扱える型でも緯度経度は管理でき、Geometry型を使って位置情報を管理する必要はない。 しかし、システムの要件によってはGeometry型の方がよい場合もあるため、使用用途を紹介しようかと思います。 メリット・デメリット ※使ってみての感想 メリット 地点間の距離を求めることができる これに尽きると思います。ただ距離を求めるだけではなく、「求めた距離内の〇〇を抽出」「自分の位置から最短の距離にある〇〇を探す」など応用が可能である。 デメリット 他の型と違って特殊な使い方になる 他の型のように単純なINSERTやSELECTは使用できないので、MySQL上で実行できる形式にSQLを作成する必要がある。 MySQL上で直接実行する場合は問題ないかもしれないが実際に運用するシステムでそんなことをするはずはない。 何らかの言語やフレームワークを使用して画面等を生成
はじめに MySQL8.0では位置情報に関する機能が充実した...という情報を見かけたので、試しにGeometry型というデータ型を使って、位置情報を格納するテーブルを作ってみることにしました。 ※GIS関連は全く詳しくないので、誤りがありましたらご指摘頂けると幸いです。 使用した環境 OS CentOS7.7(1908) RDBMS MySQL8.0.19 テーブルの作成 駅の位置を表すstationというテーブルをnkojimaデータベース内に作成しました。 位置情報はlocationというGeometry型のカラムに持たせています。 位置情報を表すデータ型はGeometry以外にも幾つか用意されており、以下に示したものは「OpenGIS クラスに対応するデータ型」となっています。 POINT:地点を表す。 LINESTRING:地点間を直線で結んだ線分を表す。 POLYGON:多辺の
MySQL 8.0.23では、新たな機能としてInvisible Columnsが導入されました。この機能は、あるカラムを「存在はしているけれども明示的に指定しない場合は参照しないカラムとして扱う」ことができるようになっています。今回はこのInvisible Columnsの機能について見ていきましょう。 なお、似た機能である、invisible indexesについては第110回 Invisible Indexesを使って気軽にチューニングを始めてみるで紹介しておりますのでそちらをご参照ください。また、今回利用しているMySQLのバージョンは8.0.26となります。 Invisible columnsのあるテーブルの作成 Invisibleなカラムのあるテーブルを作成するには、InvisibleにしたいカラムにINVISIBLEをつけてCREATE TABLE文で実行するか、ALTER
このエントリーは Classi developers Advent Calendar 2022の18日目。 ネタはなんでもいいよ!とのことなので、Claasiに全く関係なく、MysqlからPostgreSQLに移行する際の注意点を書く。 なお、まだRDSにPostgreSQLがなかった頃のような昔の記事だがこちらに無いことを書いていく。 soudai1025.blogspot.com soudai1025.blogspot.com MySQL から PostgreSQLにデータ移行する際の注意点 MySQLとPostgreSQLは互換性がもちろんありませんので、細かいところで違いが発生します。 よく踏むデータ移行の注意点は以下の通り。 timestampやdatetimeを移行する先はtimestamp型になるが、timestamp型はタイムゾーン付きと無しがある timestamp wi
毎日SQLを手で実行して結果をエクセルに貼り付けて...なんてことしていませんか? Pythonなら全自動でできます。PythonSQLExcel Pythonを最近勉強し始めたのですが、 PythonでSQL実行して結果をエクセル出力すると楽になると思ったのでまとめました。 コード50行くらいです。 やること PythonでSQLフォルダのSQLを順に実行 SQL実行結果をSQLと同じファイル名でエクセル出力 エクセルをZIPにまとめる ファイルサーバに置く 試した環境 Python3.8 jupyter-notebook(Anacondaから) mysql 準備 実行したいSQLを〜.sqlの名前でフォルダにまとめて保存しておく 一部のPythonライブラリをimportしておく ソース/実行 import mysql.connector import datetime import
MySQL is the choice of many when it comes to database. Its free and quite robust. During one of our prototype implementations we had a requirement of calling some external processes when there is a change in a MySQL table. MySQL triggers are provided for the same purpose. They get executed when the table is changed in certain ways that is specified by the programmer. Now it is very easy (rather tr
この記事は、MySQL Casual Advent Calendar 2017の20日目の記事です。 煽り気味のタイトルですがみなさん SHOW ENGINE INNODB STATUS 読んでますか? SHOW ENGINE INNODB STATUS \G 見づらいのなんとかならんのか。— そーだい@初代ALF (@soudai1025) 2016年12月20日 わかる。でもMySQLの振る舞いを知る中でSHOW ENGINE INNODB STATUSを読まざる得ない場面はそこそこあります。 どんな時に必要になるのでしょうか? そこでSHOW ENGINE INNODB STATUSにまつわる話を書きます。 SHOW ENGINE INNODB STATUS をまず読みやすくする まず末尾に \G を付けましょう。 これで3倍読みやすくなります。 次に pager less -S を
WSL2ではPID 1がinitd問題によってsystemdが起動できません。 そのため、systemctlが使えなくてMySQLが起動できないってなるのですが、yoku0825さんにやり方を教えてもらったのでメモとして残します。 そんなムズくないです。最近のmysqldには--daemonizeがあるのでそれを使えばokです— yoku0825 (@yoku0825) 2021年8月2日 つまりroot権限で mysqld --daemonize を叩けばOK。 ただ /var/run 配下は再起動時に /var/run/mysqld/ がなくて失敗すると思うので起動はフォルダを作って権限を付けてあげましょう。 $ mkdir /var/run/mysqld $ chown mysql:mysql: /var/run/mysqld $ mysqld --daemonize これでMySQ
Products Communications Messaging Send and receive multichannel text and media messages in 180+ countries
こんにちは、インフラ部の id:sue445 です。私事ですが先日GCPの Professional Cloud Architect を取得しました。 そういうわけで今日はGCPではなくAWSの話をします。 tl;dr; 劇的ビフォーアフター 構成 移行のモチベーション パフォーマンス向上 コスト圧縮 アーキテクチャの採択理由 やったこと 1. DB作成 2. MySQL 5.7 -> 8.0 MySQL 8.0でハマったこと MySQL 8.0からデフォルトの認証がcaching_sha2_passwordになった RDSのMySQL 8.0からMariaDB 監査プラグインがなくなった 3. 本番用のDockerイメージを作成 困ったこと:CodeIgniterがログの標準出力に対応していなかった 4. ECS + Fargate + CodePipeline構築 5. CDN作成 6
公式HP見てたらワンライナーがあったのでメモ #2018/6/3 少しコマンドが変わっていたので更新 ワンライナーには環境依存はないけれど一応 Host OS : CentOS7.3 Target : Mariadb-10.2 リポジトリインストール $ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash これだけ バージョン指定したい場合は $ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=mariadb-10.0 その他のオプションは下記URLに https://mariadb.com/kb/en/the-mari
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く