CLOVER🍀

That was when it all began.

MySQL

RustのORMであるSeaORMをMySQLで試す

これは、なにをしたくて書いたもの? RustでORMというと、DieselかSeaORMが挙がるようです。 Diesel is a Safe, Extensible ORM and Query Builder for Rust SeaORM An async & dynamic ORM for Rust またSQLxという線もありそうです。 GitHub - launchbadg…

MySQL 8.4でGTIDレプリケーションを構成する

これは、なにをしたくて書いたもの? MySQL 8.4になってからレプリケーションを行う環境を作ったことがなかったので、設定しておこうということで。 MySQLのレプリケーション MySQL 8.4のレプリケーションに関するドキュメントはこちら。 MySQL :: MySQL 8.4…

MySQLでプライマリーキーにUUIDを使う場合はシーケンシャルなフォーマットにした方が良さそうだという話

これは、なにをしたくて書いたもの? 前にTiDBでTiDBでプライマリーキーにUUIDを使う場合はシーケンシャルなフォーマットにしない方が良さそうだ、という 話を見てみました。 TiDBでプライマリーキーにUUIDを使う場合はシーケンシャルなフォーマットにしない…

SQLModelを非同期IO(async、await)とMySQLを組み合わせて使う

これは、なにをしたくて書いたもの? 前にPythonのORMであるSQLModelを試してみました。 PythonのORM、SQLModelをMySQLで試す - CLOVER SQLModelは非同期操作もできるようなのですが、SQLモデルのドキュメントを見ても使い方がわからなかったので少しメモし…

PythonでMySQLに非同期にアクセスするaiomysqlを、MySQL 8.4で試す

これは、なにをしたくて書いたもの? MySQLに非同期アクセスするドライバーを少し確認しておいた方がいいのかなと思いまして。 今回はaiomysqlを試してみたいと想います。 MySQLに非同期アクセスできるドライバー PythonでMySQLに非同期アクセスできるドライ…

PythonのORM、SQLModelをMySQLで試す

これは、なにをしたくて書いたもの? PythonのORMをそろそろ試してみようかなと思いまして。 PythonのORMといえばSQLAlchemyが有名らしいのですが、FastAPIの作者がSQLAlchemyを使って作成している SQLModelというものがあるようなので、MySQLで試してみるこ…

RustでMySQLにアクセスしてみる

これは、なにをしたくて書いたもの? RustからMySQLにアクセスしてみましょう、ということで。 mysqlクレート RustでMySQLにアクセスするには、mysqlクレートを使うみたいです。 mysql - Rust こちらを使ってみます。 トップページ書かれているサンプルなど…

mypy+types-PyMySQLでConnectionを扱う時にハマった話

これは、なにをしたくて書いたもの? こちらのエントリーを書いている時にmypyとtypes-PyMySQLでConnectionを扱う時にちょっとハマったので、単独のエントリーとして メモしておきます。 PyMySQLでinsert文(またはreplace文)を高速に実行するにはexecutema…

PyMySQLでinsert文(またはreplace文)を高速に実行するにはexecutemanyを使う

これはなにをしたくて書いたもの? 前にPyMySQLで大量にデータを登録しようとして、遅いな…?と思ってConnector/Jでバルクinsertを使うように切り替えたことがあるの ですが、PyMySQLでもexecutemanyを使えば同じことができそうだったので試してみることにし…

MySQL 8.0.22以降は、show [full] processlist文ではなくperformance_schemaのprocesslistテーブルを使う

これは、なにをしたくて書いたもの? MySQLを使っていてトラブルがあった時によく使うコマンドのひとつとして、show [full] processlistがあると思います。 ただ、これはMySQL 8.0.22以降は代替の方法を使うように促されています。 今回はその内容を確認した…

PyMySQLを使って、PythonからMySQLに接続してみる

これは、なにをしたくて書いたもの? Pythonでデータベースアクセスをあまりやってきていないので、情報収集がてら軽く練習にということで。 PythonからMySQLにアクセスする PythonからMySQLにアクセスするには、まずはドライバーを探すことになります。 以…

Drizzle ORM(Drizzle Kit)で、既存のテーブル定義からスキーマを生成する

これは、なにをしたくて書いたもの? 前にDrizzle ORMを試してみました。 TypeScriptのORM、Drizzle ORMをMySQLで試す - CLOVER Drizzle ORMを使う時にはスキーマ(schema.ts)を作る必要があるのですが、これを既存のテーブル定義から作成してみたいと思い…

TypeScriptのORM、Drizzle ORMをMySQLで試す

これは、なにをしたくて書いたもの? TypeScriptのORMはどれを使えばいいのかなといろいろ思ったりするのですが、Drizzle ORMというものを1度試してみようかなということで。 TypeScriptのORMを探す TypeScriptで使えるORMをいくつか探してみます。 Prisma |…

MySQL Shellを使ってUnixドメインソケットでMySQLサーバーに接続する

これは、なにをしたくて書いたもの? MySQLを扱う時のクライアントツールは、従来のMySQLクライアント(mysqlコマンド)からほぼMySQL Shellに移しています。 で、MySQL ShellでUnixドメインソケットでMySQLサーバーに接続しようとした時に最初どうしたらい…

Ubuntu Linux 22.04 LTSにMySQL 8.4をインストールする(設定へのドキュメントまとめ付き)

これは、なにをしたくて書いたもの? MySQL 8.4がリリースされてから4ヶ月ほど経ったので、そろそろ1度インストールから見ておこうかなということで。 リリース事情のキャッチアップもしていきます。 MySQL 8.4 MySQL 8.4は、MySQLの初めてのLTSリリースです…

よくある楽観的ロックで見るトランザクション分離レベルの違い(MySQL、PostgreSQL)

これは、なにをしたくて書いたもの? アプリケーションを作成していると、いわゆる排他の方法のひとつとして楽観的ロックをよく使うと思います。 たとえばこういう定義のテーブルがあったとします。 create table mytable( id varchar(3), message varchar(1…

MySQLをaptリポジトリーからインストールする時に、MySQL 8.0が選択されるように設定する

これは、なにをしたくて書いたもの? MySQLの次のLTSである、MySQL 8.4.0がリリースされました。 MySQL :: MySQL 8.4 Release Notes :: Changes in MySQL 8.4.0 (2024-04-30, LTS Release) ふだんの自分はMySQLをインストールする時はaptリポジトリーを使っ…

MySQL 8.0で追加されたSELECT ... FOR UPDATE SKIP LOCKEDを試す

これは、なにをしたくて書いたもの? MySQL 8.0.1から、SELECT ... FOR UPDATEにSKIP LOCKEDというオプションがつけられるようになったみたいです。 このオプションを使うと、クエリーを実行した時にすでにロックされているレコードが結果セットから削除され…

MySQL Connector/JのrewriteBatchedStatementsプロパティとPreparedStatementの関係を確認する

これは、なにをしたくて書いたもの? HikariCPのMySQL Connector/J(MySQLのJDBCドライバー)に関するWikiを見ていて、ふと疑問に思ったことがありまして。 MySQL Configuration · brettwooldridge/HikariCP Wiki · GitHub それは、rewriteBatchedStatements…

MySQL Connector/Jで設定した方が良さそうなプロパティについて

MySQLのJDBCドライバーであるConnector/Jですが、どのようなプロパティを設定した方がいいのかよく忘れるので。 いい情報はないかな?と思ったら、HikariCPのWikiによくまとまっていました。 MySQL Configuration · brettwooldridge/HikariCP Wiki · GitHub …

Trinoで、MinIOとMySQLのデータをjoinしてアクセスしてみる

これは、なにをしたくて書いたもの? 前に、Trinoを使ってMySQLとMinIOに格納されたデータにアクセスしてみました。 分散SQLクエリーエンジン、TrinoをUbuntu Linux 20.04 LTSにインストールしてMySQLに接続してみる - CLOVER Trinoから、Hive connectorでAm…

Node.jsでMySQL 8.0のデフォルトの認証方式(caching_sha2_password)に対応するには、mysql2を使う

これは、なにをしたくて書いたもの? MySQL 8.0になって、デフォルトの認証方式がcaching_sha2_passwordからmysql_native_passwordに変更されました。 For the server, the default value of the default_authentication_plugin system variable changes fro…

分散SQLクエリーエンジン、TrinoをUbuntu Linux 20.04 LTSにインストールしてMySQLに接続してみる

これは、なにをしたくて書いたもの? Trinoという分散SQLクエリーエンジンを試してみたいなと思い、まずはインストールしてみたいと思います。 Trino | Distributed SQL query engine for big data それから、MySQLに接続してTrino経由でアクセスしてみまし…

MySQL Connector/JとCharacter Set/Character Set Results/Connection Collationとの設定、関係がよくがわからなかったので調べてみる

これは、なにをしたくて書いたもの? MySQLのJDBCドライバー、Connector/JのcharacterEncoding、characterSetResults、connectionCollationあたりの説明を見ていて、 不思議な感じがしたので調べてみることにしました。 MySQL :: MySQL Connector/J 8.0 Deve…

OpenTelemetry/Jaeger/JAX-RS/MySQLで、Distributed Tracing

これは、なにをしたくて書いたもの? OpenTelemetryについて、1度見ておきたいと思いまして。 OpenTelemetryの前身のひとつであるOpenTracingを使ったエントリーを過去に書いていたので、こちらをOpenTelemetryに置き換える形で 進めていくことにします。 Ja…

Node.js × TypeScriptのORM、PrismaをMySQLで試す

これは、なにをしたくて書いたもの? Node.js+TypeScript環境でのORMはどれを使ったらいいのかな?ということで。 このあたりみたいです。 Sequelize | Sequelize ORM v5以降、TypeScriptをサポート TypeORM - Amazing ORM for TypeScript and JavaScript (…

MySQL、PostgreSQL、SQLite3、SQL Serverのスキーマ定義を宣言的に管理するsqldefを、MySQLで試す

これは、なにをしたくて書いたもの? sqldefという、MySQL、PostgreSQL、SQLite3、SQL Serverのスキーマ定義をSQLで宣言的に管理できるツールを 知ったので、ちょっと試してみることにしました。 GitHub - k0kubun/sqldef: Idempotent MySQL/PostgreSQL sche…

MySQL 8.0.21以降で、レプリケーションの用語が変わっていっている(Master → Source、Slave → Replica)という話

これは、なにをしたくて書いたもの? 世の中、"master"や"slave"という単語が違う表現に置き換えられていっていますが、そういえばMySQLの レプリケーションでもこのあたりの単語を使っていましたがどうなったのかな?と思って見てみたら。 ちょっとずつ変わ…

MySQL 8.0のCharset utf8mb4での日本語環境で使うCollationで文字比較をしてみる

これは、なにをしたくて書いたもの? MySQL 8.0のCharset utf8mb4で使えるCollationについて、ちょっと見ておこうかなと思いまして。 具体的には、「MySQL徹底入門 第4版」の「11.2 Collation」に書かれている文字比較およびソートについて自分で 確認してみ…

MySQL Server 8.0の設定を、set persist(またはset persist_only)で変更する

これは、なにをしたくて書いたもの? MySQLでは、(可能なものについては)設定をsetで動的に変更することができます。 MySQL :: MySQL 8.0 リファレンスマニュアル :: 5.1.9 システム変数の使用 MySQL :: MySQL 8.0 リファレンスマニュアル :: 5.1.4 サーバ…