Database JUNKY

MySQL,MariaDBを中心としたブログです

MySQL

なければINSERT、あればUPDATE(ON DUPLICATE KEY UPDATE)

レコードがなければINSERT、あればUPDATEなどどいう超便利なSQL構文があります ON DUPLICATE KEY UPDATE オプションがそれなのですが、 結構便利です、今回 MariaDBで試しておりますが、MySQLでもおそらく同様にいけると思います。

MySQL 集計結果を横倒しで出すSQL

かなり無理やりだけど、集計の結果を横倒しで表示するサンプルSQLです。 かなり、無理やりですが笑 こんなデータを。。。 +------------+------+ | wdate | cnt | +------------+------+ | 2014-01-21 | 1 | | 2014-01-22 | 20 | | 2014-01-23 | 10 | | 2014…

知ってた!?MySQL5.6以上から日本語全文検索ができるようになったってこと・・

MySQL5.6~ で日本語全文検索ができるぞ!!! 最近MariaDBばかりやっていて、MySQLの存在を忘れていたのですが、今まで英語しか利用できなかったのに、いつの間にか標準で日本語全文検索ができるようになっていたので、久しぶりに触って見ようと思います。…

MySQL 日時表記を数字のみで表す

現在日時を、YYYY-MM-DD の形式で表示されることがもっとも普通なのですが笑、時と場合によって、日付を8桁の数字のみで表したいとかありますよね。そんな時は、DATE_FORMATでやっちゃえばいいんです。

python3から、MySQLのストアドプロシージャをCALLする

python3でコードを書いているうちに、MySQLに関わる部分のソースが煩雑になってしまうため、ビジネスロジックは、全て、MySQLのストアドプロシージャにまかせるってことでこんなに綺麗なソースじなります。(あくまでも個人的な主観ですが) なお、python3で…

python3でapiサーバを作る!!(笑)

開発の人に見せたらすごく笑われてしまいますが、ちょっと勉強用のため、ここにメモを残しておきます。 サンプルは、python3でMySQLからSELECTした結果をjsonで返すものです。自分的にapi (笑)的なもの port 5000番で待ち受けます port 8080から上記をCALL…

MySQL日付の範囲内でのレコード重複チェックをSQLで実現する

日付(From - To )にて、レコードが重複(かぶっている)ものを抽出するSQLのサンプルです。うーん、なんて言えばいいのか 日付期間の重複チェック と言えばいいのか、日時の範囲チェックというべきか・・・なかなか難易度が高かったので、メモを残しておきま…

発行される全てのSQLを全てログ取得する方法

調べればすぐわかるのですが、一応メモ。 MySQLを利用した運用の中で、どんなクエリが発行されているのか見たい時ありますよね? 通常ですと、スロークエリーを見るケースが多いので、そちらを見るのかな? しかしながら、スロークエリーではないのですが、…

乱射注意!!!MySQL TRIGGER(トリガー)は結構使える!!

使いみちによっては、すごく便利なトリガーについて説明します。使いみちと書いたのは、なんでもかんでもトリガーにもりもりしちゃうと対象テーブルのパフォーマンスに影響出ちゃうよという乱射状態になってしまいますので注意って感じです トリガーとは Tri…

amazon linux でgalera clusterを運用する時の注意点

あー。。別にamazon linuxに絞り込む必要はないのですが。もう、ec2以外ではそんなにやる気ないなーって思うので、備忘録がわりに残しておきます。 Linkwitz Bluetooth ヘッドホン 4.1 HiFi高音質 ステレオ ワイヤレスヘッドホン マイク付き 折り畳み式 有線…

Galera Cluster for MySQLでクラスタ環境を構築する

Galara Cluster for MySQL 5.7 でクラスタ環境を構築する 前回のMariaDBでのGalera Clusterの構築は手違いで消してしまった(−_−;)今回は、MySQL5.7でGalera Clusterを構築、運用することをやっていきたいと思います。以外と簡単ではあるのですが、今回EL…

Mariadb10.2 Galera Clusterで即席クラスタ環境を構築する!!

Mariadb10.2 Include Galera Cluster 日々のデータベース運用の中で、一番大変なのが、パフォーマンスチューニング。 チューニングの大半は、索引チューニングを行うか、SLAVE サーバをスケールアウトして、負荷分散するかの2つを行いうのが(私的には)一…

mysql_health_check でlong_queryをnagiosで監視する

月に一度はかならずはまるnagios サービスが長期化すると、この観点でも監視を入れないとだめだっていうのがどんどん増えてきて対応はするのですが、また数日後、どう設定したんだっけ?というのを忘れてしまうのが難点なので、あくまでも自己流ですが、メモ…

最速! mysql5.7 インストール手順

MySQL5.7のインストール しばらくMariaDBに使っていたので、MySQL 5.7のインストール方法について、すっかり忘れてしまったので、備忘録代わりに書きます。その過程でエラーおよびワーニングが発生ししたものに関しては、1つずつ、my.cnfを修正して、結果エ…

MySQL,MariaDBでタグ機能(TAG)を実現する(TOXI法)④SQL応用

もう、設計としては完了しているので、作成されたデータを元に応用SQLを考えてみます。 もう特に考える部分はないので、あとは好きな角度からSQLを発行するだけでいいと思います。 TANITA 【SDカード搭載】 & 【乗った人をピタリと当てる「乗るピタ機能」搭…

MySQL,MariaDBでタグ機能(TAG)を実現する(TOXI法)③タグマップデータ投入

前回 hit.hateblo.jp にて、タグデータを投入する説明はしましたが、肝心のDIARYの中での紐付けについては書いていませんでした。 前回の記事を含め、タグのマッピングの登録方法についても記載していきます。もちろんストアドプロシージャベースでの話です

MySQL,MariaDBでタグ機能(TAG)を実現する(TOXI法)②タグデータ挿入

前回の、TOXI法による、MySQLのタグのしくみを説明しました。 hit.hateblo.jp 正規化として、これ以上ないくらいの完璧さなのですが、実際このタグ、複数のユーザーが任意に設定できるという、いわゆるソーシャルタグの場合はどうでしょう? 正規化とはうら…

MySQL,MariaDBでタグ機能(TAG)を実現する(TOXI法)①タグ関連のスキーマ設計

MySQLでタグのしくみを作る? MySQLでタグの仕組みを作る場合は、どのような設計をすればいいのでしょうか? タグの設計にはいくつかの種類があり Licious:コンテンツ系のデーブル1つの中にタグフィールドを持たせる方法 Scuttle: コンテンツ系とタグ系のテ…

オートナンバーをランダムユニークな値に変換する

MySQL(MariaDB)のオートナンバー型ってもちろん便利なのですが、数年システムを運用していくと、こんな課題が出てきてしまいます。 とあるWEBシステムで、規則性のあるデータを見つけてしまう。ちなみに、これ、セキュリティの話ではなく、あくまでも、外…

MySQLでジョブキューを管理する(Q4M)

いまいちキューの概念がわかっていないのだが、ようはあれかな?非同期で、データをやりとりするもの?え?違う???たとえば、受注処理の場合とか、受注が完了するまでアプリケーションが待つのではなく、キューという形で一連の受注プロセスからデーモン…

きっと役に立つ!MySQL,MariaDB ストアドプロシージャ・ストアドファンクションテンプレート

MySQLおよびMariaDBにおいて、ストアドプロシージャを作成するときにいちいち、探しまわる時間がもったいないので、テンプレート的なものを用意しました、基本的、コンソールにコピペで行けるようにしておりますのでご自身の環境で作成する際のサンプルにご…

mysqlアカウントで、コンソールにログインする方法

MySQL5.5からMaria10.0に変更したら、いつの間にか、linuxコンソールにてrootから、su - mysql ができなくなってしまいました。そちらを、su - できるようにした対処方法をメモします こんなエラーになってしまいました。 "This account is currently not av…

MySQLのrootアカウントが消えてしまった!!そんなときの復旧手順

何が起きたのかさっぱりわからないのですが、MySQL(MariaDBのパスワードがrootから何から消えてしまった。。 なぜ消えたのかは置いておいて、とりあえず、現状復帰しないことには、だーれも接続できない状態が続いてしまう・・これはまずい。 そんな場合のro…

DBが遅い!そんな時・・MySQL スロークエリーからの索引チューニング〜 mysqldumpslow

MySQL/MariaDBでのパフォーマンス低下一番の理由がスロークエリーです。MySQLでサービスを展開しているデータベースやさんって、例外なくここをきにするのではないかな?と思います。そしてスロークエリーが発生した場合の一番の対策は、適切な索引(INDEX)…

ソーシャルサービス系のデータベースを構築する

私、データベースエンジニアです データベースエンジニアとは 仕事を進める上で、多数の別部門との協力が必須となるデータベースエンジニアには、高いコミュニケーション能力が求められます。また、物事を論理的に考えることが好きな方もデータベースエンジ…

ソーシャルサービス系のデータベースを構築する~データベースの作成

データベースを作成する まず、ソーシャルサービス系のデータベースといってもデータベースという大きな鉢がないとどうしようもならないため、データベースの作成をする必要があります。 データベースの作成といっても簡単で、ほんと、数秒で作成が終わっち…

フォロー/フォロワーの構築 ~ソーシャル系のDBを構築する

フォロー/フォロワーのテーブル設計 ソーシャルネットワーク系のデータベースでフォロー/フォロワーってどんなしくみで設計しているの?なんていうのを中心にまとめてみました NURO光キャンペーン ネットのみでも必ず3万円が貰える! 有効な暇つぶしの方法と…

MySQL スキーマ内に存在する全ての索引を一括で抽出するSQL

mysql でテーブルの索引がどう設定されているのか知りたいときがあると思うのですが。その場合、 mysql> show index from TABLE_NAME; で確認できます でわ、スキーマ内の全てのテーブルの索引を抜き出したい場合はどうするか? というわけでinformation_sch…

GROUP_CONCATを利用して、列名を列挙したSQLを生成する

MYSQLには、GROUP_CONCATというすばらしい関数があるのですが、ような複数のレコードのとある値を、一行にまとめるということができる関数で、そりゃーもう便利です!!今回はこのGROUP_CONCATを利用して、SQLからSQLを生成するなんていうサンプルを作ってみ…

MySQL:レプリケーションエラーをスキップする

日々の運用の中で、レプリケーションエラーが発生した場合、原因が分かっているものは、とっととスキップさせて先に進めたいですよね? そんなときには、SQL_SLAVE_SKIP_COUNTERを設定することでレプリケーションのエラーをスキップすることができます Fire …