
「これを見たらトランザクション周りがざっくり分かる」を目指します。 MySQLを前提に解説しますが、他のDBMSでもベースとなる部分は同じだと思います。 トランザクションとは? ざっくり言うと「ここからここまでワンセットです」な処理のことです。 たとえば、以下のようなSQLが2つあったとします。 この2つは絶対にセットで実行したいとします。 ですが、この2つを実行した結果「1つ目は成功したけど2つ目は失敗した」となった場合、「在庫だけ減ってしまった!」になってしまいます。 こういうときにトランザクションが使えます。 この2つをトランザクションとして実行すると、以下のどちらかに強制できます。 すべて実行する すべて実行しない つまり、中途半端に実行されるのを防げます。 トランザクションの書き方 トランザクションとして実行するには、BEGINとCOMMITで囲います。
さてさて、これは開発者がたまに遭遇する「あるある」な話かもしれませんが、DBからGROUP BYでデータ取得するとき以下のようなエラーが発生したことはないでしょうか。 Syntax error or access violation: 1055 Expression #(数字) of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘(フィールド名)’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select (フィールド名), id from (テーブル名) group by (グループ
概要 RDB(リレーショナルデータベース)を運用していると、複数のトランザクションが同じデータに同時アクセスしようとする場合に「デッドロック」が発生することがあります。デッドロックとは、あるトランザクションが必要とするリソースが別のトランザクションによってロックされ、さらにそのトランザクションも他のリソースのロック解除を待っているため、互いに進行できなくなってしまう状態を指します。
バックエンドエンジニアの徳富(@yannKazu1)です。先日、メドピアのメインサービスであるmedpeer.jpで使われているデータベースエンジンを、MySQLからAurora MySQLへと移行しました。今回はその移行のプロセスについて詳しくお話しします。 移行したデータベースの簡単なインフラ構成 移行方針 今回移行するデータベースは複数のアプリケーションから参照されており、ダウンタイムによるユーザー影響が大きいため、移行方針の検討の段階で重視したのは、ダウンタイムの最小化でした。これを達成するために、DNSのCNAMEレコードと、Auroraのリードレプリカを活用し、移行させることにしました。 DNSのCNAMEレコードの使用 データベースエンドポイントをアプリケーションに直接記述する代わりに、DNSのCNAMEレコードを利用して間接的に参照するようにしました。これにより、データベー
よく見るDB接続例 Go言語を用いてmysqlに接続する際、DBの情報を文字列で直書きしているケースを良くみる import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func main(){ db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/db?charset=utf8&parseTime=true") // 以下省略 } import ( "database/sql" "time" "github.com/go-sql-driver/mysql" ) func connectDB() *sql.DB { jst, err := time.LoadLocation("Asia/Tokyo") if err != nil { // エラーハンドリ
2021/05/24 サイボウズ開運研修 動画が以下のサイトからリンクされています - https://blog.cybozu.io/entry/2021/07/20/100000 - これに矢印を書きながらぐりぐりやっていたわけなので、資料単体だとわかりづらいと思います…
■ はじめに 現実を前にして正規化などといった理想を捨て去ったとある人は、 とある日とあるスキーマに全知全能の神を降臨させようと画策した。 すなわちTEXT型の列を大量に備えたテーブルを用意して、 あらゆる情報と状況を何とかしてもらおうと企図したのだった……!! ■ やってみる MySQL5.6を実行できる環境を用意して、 とりあえず以下のようなCREATE TABLE文を叩いてみる。 mysql> CREATE TABLE zeus ( -> col1 TEXT -> , col2 TEXT -> , col3 TEXT -- 中略 -> , col195 TEXT -> , col196 TEXT -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ERROR 1118 (42000): Row size too large (> 8126). Ch
2025-07-18 Dockerで開発環境構築 2025-03-27 fputcsvで文字コードと改行コードを変換する 2025-02-11 特定のUSER_AGENTを拒否 2025-01-09 MySQLでバルクでUPSERTしたい Linuxめも 2025-01-06 トラブル対応 2025-01-04 FormattingRules PukiWiki/1.4/Manual/Plugin/A-D PukiWiki/1.4/Manual/Plugin/E-G PukiWiki/1.4/Manual/Plugin/H-K Linuxめも MySQLで4バイトのUTF-8を扱う† MySQLでは4バイトのUTF-8を扱う場合はutf8mb4を指定する必要があります。 CREATE DATABASE データベース名 CHARACTER SET uff8mb4; これで4バイトを使用する絵文
Документ содержит информацию о кодировках символов в MySQL, включая различные наборы символов и их применение. Рассматриваются такие аспекты, как кодировка символов, соответствующая MySQL, и различия между UTF-8 и UTF-8MB4 в контексте работы с данными. Также описаны настройки, необходимые для правильного использования кодировок на уровне сервера, базы данных и таблицы.
先月投稿した2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャを学ぶ道のりと代表的な実装モデルの概要を紹介しました。 今回は、前回同様、主に新卒Webエンジニア向けに、Webアプリケーションサーバとデータベースサーバ間の接続管理モデルと運用事情について紹介します。 データベース接続の永続化やコネクションプーリングとは何なのか、なぜ必要なのかといったことが主な話題です。 背景 データベース接続の永続化とはなにか データベース接続のオーバヘッド データベース接続の永続化手法 コネクションプーリングとはなにか コネクションプーリング: ドライバ型 コネクションプーリング: プロキシ型 コネクションプーリング全体について PostgreSQLとMySQL 参考資料 まとめ 背景 2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャの話とWebアプリケーショ
来る2月27日、データベースの新書籍を発売させて頂くことになった。タイトルは「理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL」となっている。単に「データベース」と書いてあるが、RDBがメインのテーマの書籍である。 多くの人が未だにRDBを使いこなせていないのではないか。RDBの使い方をマスターするには何が必要なのか。それがここ数年私が追ってきたテーマであり、この書籍を出すことになった動機である。 あまりにも酷いDB設計、あまりにもスパゲティなクエリ、あまりにも希薄なデータモデルへの理解。そういった問題はどこから生み出されるのか。そのひとつの結論としてたどり着いたのが、「そもそもRDBの使い方があまり理解されていないのではないか」ということだった。名著、SQLアンチパターンでは「やってはいけないケース」について学ぶことができるが、その反対のテーマ、つまり本来どの
MySQL Performance Blogの翻訳。Perconaのサポートエンジニアである筆者が、InnoDBのパフォーマンスチューニングの基礎について、ハードウェアやOSの選定からパラメータの推奨値まで解説する。 最近、2007年にPeter Zaitevが書いた「InnoDBパフォーマンス最適化の基礎」という記事を見つけた。これは素晴らしい記事で、読んでいると、MySQLとPercona Serversそして今日利用可能な全ての基盤技術に関して、6年近くの間に何が変わってきたのかを見直してみたいと思わせるものだ。 本当にたくさんのことが変わったものだ!この記事では、InnoDBの使用に効果的なパラメータの多くに、特にパフォーマンスの観点から焦点を当てる。私はサポートエンジニアで、Percona SupportではInnoDBパラメータの適切なサイズに関する質問がたくさん寄せられている
MySQL に限らず、SQL のNULL の仕様には何回か「えっ」と驚くことがあったのでメモしておこうと思います。5.1 版の日本語マニュアルがなかったものについては、4.1 のマニュアルを参照しました。 そもそもNULL は何を意味するか NULL は未定義または、不明を意味する。「電話番号を持たない」ということを表現する場合は、NULL ではなく、空の文字列を使う。 NULL 値というものを SQL 初心者はよく混乱します。SQL 初心者は、多くの場合、NULL が空文字 "" と同じであると考えてしまいます。これは違います。たとえば、以下のステートメントは完全に別のものです。 mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES (""); どちらのス
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く