概要 RDB(リレーショナルデータベース)を運用していると、複数のトランザクションが同じデータに同時アクセスしようとする場合に「デッドロック」が発生することがあります。デッドロックとは、あるトランザクションが必要とするリソースが別のトランザクションによってロックされ、さらにそのトランザクションも他のリソースのロック解除を待っているため、互いに進行できなくなってしまう状態を指します。
概要 RDB(リレーショナルデータベース)を運用していると、複数のトランザクションが同じデータに同時アクセスしようとする場合に「デッドロック」が発生することがあります。デッドロックとは、あるトランザクションが必要とするリソースが別のトランザクションによってロックされ、さらにそのトランザクションも他のリソースのロック解除を待っているため、互いに進行できなくなってしまう状態を指します。
データベースのGUIクライアントツールってたくさんありますよね。 「漢は黙ってコマンド!」って方もいるかとは思いますが、私は便利なツールは用途に合わせて使いたい派です。 (もちろんコマンドを知らなくてもいいという意味ではないです) 今回はMySQLのおすすめクライアントツールのご紹介です。 Mac版 Sequel Ace ★オススメ 私個人的にはMacだとこれが一番使いやすいです。 軽くて大体の機能はついていますし、dumpなども取りやすいです。 https://sequel-ace.com ※以前はSequel Proを利用していましたが、 2021/06/01現在で、開発が止まっているため乗り換えました。 現状は後継アプリのSequel Aceの使用をおすすめします。 基本的にはSequel ProからフォークしたプロジェクトのようなのでUI/UXもほぼ同様に違和感なく使用できます。
概要 この記事では、MySQLでのSQLクエリのパフォーマンスを最大限に引き出すための効率的な書き方を解説します。アプリケーションの応答速度を向上させることは、ユーザーエクスペリエンスの大幅な改善に直結します。この記事を通じて、初心者から中級者のデータベース管理者や開発者は、SQLクエリの基本から高度な最適化テクニックまで、幅広い知識を習得できることを目指しています。 MySQL 8.0での検証を基にしていますが、その他のバージョンでの動作は保証されません。この記事は継続的に更新されます。 主な内容 このセクションでは、検証データの作成手順を含め、インデックスの利用、JOIN操作の最適化、サブクエリとビューの利用、クエリキャッシュの活用など、効率的なクエリの書き方について解説します。 検証データの作成 MySQLサーバーへの接続方法から始め、テスト用データベースとテーブルの作成、ダミーデー
C#は素人なのと、あとコードは再現なので不適切なコードになっている可能性が高いです。 おそらくもっといい解法があるはずですが、調べた限りではよくわかりませんでした。 課題 テーブルAからSELECTする、テーブルBからSELECTする、その後ふたつのデータを色々やって最後にテーブルCにインサートする、みたいなことがやりたかったわけですよ。 コード側で色々と処理を行う必要があるため、JOINやINSERT SELECTではなく一度コード側にデータを引き取るのが前提です。 問題 ベストプラクティスがわからない。 適切なサンプルコードが見付からない。 信頼できるドキュメントはMicrosoft公式くらいしかないわけですが、そこに載ってるサンプルコードはどうにも役に立ちません。 https://docs.microsoft.com/ja-jp/azure/mysql/connect-csharp
2019.07.24 原則はカーディナリティの高いものから貼っていく を追記しました。 2019.07.24 実際のMySQLはB+tree構造を採用している を追記しました。 はじめに @hk206です。 最近になって初めてインデックスなるものを使い始めました。 これによってレコード検索が爆速になります。MAJIDE。 今まではしょぼい数のレコードのテーブルしか触ったことがありませんでしたが、 数百万、数千万のレコードを色々いじる機会がありまして...... 処理速度やばない?ってふと気になり、インデックスを使用してみました。 インデックスとはなんぞやってところからB-tree構造まで、広ーーーく浅く調べたのでまとめてみました。 知ってるよーって方も復習になればいいかなと。 インデックスとは インデックスは特定のカラムの、あるレコードをすばやく見つけるために使用されるものです。検索が爆速
Unknown column type "timestamp" requested. Any Doctrine type that you use has to be registered with \ Doctrine\DBAL\Types\Type::addType(). You can get a list of all the known types with \Doctrine\DBAL\Ty pes\Type::getTypesMap(). If this error occurs during database introspection then you might have forgo tten to register all database types for a Doctrine Type. Use AbstractPlatform#registerDoctrine
この記事は、UUUM Advent Calendar 2018 9日目です。 UUUMシステムユニットに入社して6ヶ月、赤根谷です。 今回は弊社で使っているridgepoleというgemの紹介をしたいと思います。 (先月に弊社のはてなブログで公開した内容とほぼ一致してしまうのですが、読んだという方はあまり多くないと思うので再利用してしまいたいと思います。) ブログとの大きな差分だけを読みたい方は 「弊社ブログ記事に追記」の箇所だけお読みください。バグをコミットして修正したよ、という話です。 それ以外の方は上から順番にどうぞ。 はじめに 弊社ではRailsを利用したプロジェクトが多いです。そして一部でマイングレーションツールとしてridgepoleというrubyのライブラリ(gem)を使っております。弊社で開発しているわけではありませんが、今回はそのgemの紹介です。 環境 なお弊社ではru
create_table :limit_schema do |t| t.integer :int_limit_1, limit: 1, null: false, default: 0 t.integer :int_limit_2, limit: 2, null: false, default: 0 t.integer :int_limit_3, limit: 3, null: false, default: 0 t.integer :int_limit_4, limit: 4, null: false, default: 0 t.integer :int_limit_5, limit: 5, null: false, default: 0 t.integer :int_limit_6, limit: 6, null: false, default: 0 t.integer :int_lim
Amazon RDSにてAurora(MySQL)クラスタを構築し、そのログを参照していたところ、 rdsadmin というユーザが多数のクエリを発行していることを確認した。 このユーザアカウントの正体がよくわからなかったので何者か調べてみる。 AWSドキュメントに見る rdsadmin Amazon Auroraドキュメントの Amazon Aurora MySQL でのセキュリティ には、以下のような記載がある。 各 DB クラスターに管理サービスを提供するために、DB インスタンスの作成時に rdsadmin ユーザーが作成されます ということで、 rdsadmin はその名前の通り AWS マネージドサービスとしてのアカウントだとわかる。 残念ながらここに記載している管理サービスとは何かの説明はないので 具体的にどのような動作を行うのかはわからない。 また、Aurora(MySQL
概要 DockerでMySQLコンテナを立て、ホストOS、または外部サーバーから接続する方法。 docker runの場合 $ sudo docker run \ --rm \ -v $(pwd)/db/mysql_init:/docker-entrypoint-initdb.d \ -v $(pwd)/db/mysql_data:/var/lib/mysql \ --name mysql \ -e MYSQL_ROOT_PASSWORD=your_password \ --hostname my-mysql \ -e BIND-ADDRESS=0.0.0.0 \ -p 3306:3306 \ -itd mysql:5.7 version: '3.1' services: db: image: mysql:5.7 restart: always hostname: my-mysql env
デプロイまでの流れ 1.Herokuへログイン まずはHerokuにログインをします。heroku loginコマンド入力でエンターを押すとログイン画面が表示されますので、登録済みのメールアドレスとパスワードを入力します。 $ heroku login heroku: Press any key to open up the browser to login or q to exit: #エンター押す Opening browser to https://cli-auth.heroku.com/auth/cli/browser/3c35ddf6-f0a6-4911-9bd8-e9472b963bb8 Logging in... done Logged in as [メールアドレス] 2.Heroku上でアプリを作成 作成したRailsアプリのディレクトリに移動し、Heroku上にアプリを作
http://qiita.com/advent-calendar/2015/gaiax 初めまして、GaiaxAdventCalender 4日目担当の技術開発部の金田と申します。 既に熱い記事ばかりなので後続の人たちのハードルを下げる為に小ネタで行きたいと思います。 GROUP_CONCATという関数がMySQLにあるんですがそれがアツいのでみんなに教えたいという記事です。 1対多の関係のとき 普通にテーブル設計してると1対多の関係(has many)になるリレーションシップをテーブル間で張ることが多いですよね。 まぁこんな感じで。 ざっくりと記事に対して複数のタグが設定できるような作りを想定してみます。 Entryから出た線がTagは複数に枝分かれしているのがhas manyの関係です。 で、こんなデータが入ってます。 取得するとき 記事と、それに付随したタグの一覧を取得したいときは当
INSERT...ON DUPLICATE KEY UPDATE構文を使うと レコードがなければINSERT、あればUPDATE 複数行の一括UPDATE フィールド毎に条件判定して更新 を1度のクエリで行うことができる。集計処理などに便利。 基本 レコード(行)がなかったらINSERTあったらUPDATEという処理を1クエリで行える。 ユニークなフィールドに対して重複する行が挿入される場合はUPDATEという判定 なので利用には UNIQUEインデックス(かPRIMARY KEY)を指定する必要 がある
株式会社オズビジョンのユッコ (@terra_yucco) です。 今日はトラブル対応中に出くわした MySQL の小ネタ。 トラブルの内容 抽出ロジックにミスがあり、特定のアクションをしてから 60 分後までにはお知らせが飛ぶ予定だったのですが、それが一部の条件で飛ばなくなっていました。 対応自体は処理を修正して完了しましたが、影響を受けた人の抽出タスクが残ります。 2 つの日付の差分を取りたい 特定のアクションをしてから 60 分後までにはお知らせが飛ぶ予定 なので 特定のアクションをした日時 実際に対応後お知らせが飛んだ日時 がわかれば、取得は可能です。 幸い、この 2 つの値は timestamp 型で DB に入っていました。 MySQL で timestamp 型の差分を出したい 【誤】減算 timestamp 型は名称からして Unix の Epoch 秒なのかと思っていたの
MySQL5.7でJSONが使えるようになったというので、少し理解を深めようと思います。 作業メモレベルで恐縮なのですが記載します。 ドキュメントについて 公式のドキュメントは以下となります。 http://dev.mysql.com/doc/refman/5.7/en/json.html 他のリンクも色々と見ていたのですが、動かないことが多かったので徒労に終わりました。。 MySQL5.7のインストール ubuntu14.04にて作業しています。 以下のような感じでインストールしました。 $ wget http://dev.mysql.com/get/mysql-apt-config_0.3.5-1ubuntu14.04_all.deb $ sudo dpkg -i mysql-apt-config_0.3.5-1ubuntu14.04_all.deb $ sudo apt-get up
About reserved postingIf you register a secret article by the day before the same day, it will be automatically published around 7:00 on the same day. About posting periodOnly articles submitted after November 1 of the year can be registered. (Secret articles can be registered anytime articles are posted.)
EXPLAIN とは SELECT 文の前に記載して実行することで、その SELECT 文のデータへのアクセス方法を知ることができます。 SELECT 文の実行に時間がかかっている場合や、index を張ったが意図通りに使用されているのかの確認などに使うことができます。 ただ、EXPLAIN の結果は見方が難しいため、少しまとめてみます。 select_type 単一の表を参照する場合には SELECT になる。UNION を使用すると、PRIMARY, UNION, 'UNION RESULT' などが現れる。 type type はレコードアクセスタイプとも呼ばれ、そのテーブルにどのようにアクセスするのかを表しています。 実行速度が遅い場合は、ここを見ることで原因が分かる場合があります。 type の種類 const PK や UNIQUE インデックスの等価検索時のタイプ 問題なし
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く