生成AI「だけ」で作る 〜第二弾: DB設計やれよ〜
はじめに
株式会社ソニックムーブのmito1111です。
前回の記事でTodoアプリケーションのSwaggerをAIに作らせましたが、今回はそのアプリケーションで使うDBを設計させてみようと思います。
アプリケーションはNext.jsで実装させる予定なので、今回はその環境構築とPrismaでのDB設計などをやってもらいます。
具体的な流れとして、以下を考えています。
- Node.js/Next.jsプロジェクト初期化
- Prismaインストール・セットアップ
- Prisma DBスキーマ実装
- DockerでのDB永続化
- Prisma DBマイグレーション
使用するモデルは引き続きGitHub Copilotのclaude-sonnet-4モデルを使います。
最近はClaudeモデルが下火になってはいますが、検証の意味も込めてこちらを採用してます。
条件
基本的に前提条件などは第一弾と同じです。新たに使用するアプリケーションは↓ です。
開発環境条件
【表】開発環境条件
アプリケーション・ランタイム系 | バージョン | 用途 | 備考 |
---|---|---|---|
TablePlus | 6.7.0 |
DBクライアント (DBへの接続を行う) | |
PNPM | 10.15.1 |
Node.jsパッケージマネージャー | Next.js・Prismaコマンドの実行を担う。ちなみにstable版はv9である。ノリで使っている |
Docker | 27.4.0 |
DBコンテナ構築 | ローカル・テストDB永続化 |
Docker Compose | 2.31.0 |
DBコンテナ構築 | ローカル・テストDB永続化 |
asdf | 0.18.0 |
言語・ランタイムマネージャー | Node.js・PNPMを管理 |
実際の流れ
1. Node.js/Next.jsプロジェクト初期化
まずはPrismaを使いたいこともあり、Node.jsとPNPMでNext.jsプロジェクトを初期化します。
今回は前回作成したSwaggerのAPIレスポンスを参考にテーブル設計をやりたいので、作成したプロジェクトにSwaggerをコピーさせます。
前回作成したSwaggerのフルパスは伏せています。
【コード】入力プロンプトその1
> カレントディレクトリにNext.jsプロジェクトtodo_appを作成したい。
> 以下の要件を全て満たすように作成すること。
>
> 1. asdfを用いてNode.js 24.0.1がカレントディレクトリ以下で有効になるようにしてほしい。
> 2. asdfを用いてPNPM 10.15.1がカレントディレクトリ以下で有効になるようにしてほしい。
> 3. PNPMを用いてNext.jsプロジェクトをtodo_appという名前で作成して欲しい。
> 4. Next.jsの依存関係として、TypeScript・TailwindCSSをPNPMを用いてインストールしてほしい。
> 5. プロジェクト作成後、直下にdocsディレクトリを作成し、<前回作成したSwaggerフルパス>をtodo_app_swagger.ymlとしてそこにコピーして欲しい。
Claudeモデルによって作成されたtodo_appプロジェクトは以下のようになりました。
ちなみに依存関係としてインストールされたNext.js/Reactはstable版ではなく、latest版になっています。
今回は影響がなさそうなので、Claudeが生成した内容をそのまま使っています。
【コード】作成したNext.jsプロジェクト構成 (一部省略)
.
├── .tool-versions
└── todo_app
├── .env.local
├── .env.testing
├── .gitignore
├── .next
├── docs
│ └── todo_app_swagger.yml
├── next-env.d.ts
├── next.config.ts
├── package.json
├── pnpm-lock.yaml
├── postcss.config.mjs
├── public
├── README.md
├── src
│ └── app
│ ├── favicon.ico
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx
└── tsconfig.json
2. Prismaインストール・セットアップ
次にtodo_appプロジェクトにPNPMを用いてPrismaとその依存関係をインストールします。
prisma init
コマンドの初期化コマンド結果として.env
が生成されますが、今回はローカル・テストDBの二つを作成するため、
.env
を.env.local
・.env.testing
の二つになるように処理させます。
Prismaコマンドでのマイグレーションなどを環境ごとに分けたいため、env-cmd
を使って実行できるようpackage.json
のscripts
に処理を追加させます。
【コード】入力プロンプトその2
> カレントディレクトリのNext.jsプロジェクトにPrismaの依存関係をインストールしたい。
> 以下の要件を満たすように処理を行ってほしい。
>
> 1. PNPMを用いてPrismaとその依存関係をインストールする。
> 2. PNPMを用いてPrismaの初期化を行ってほしい。DBはMySQLを利用するように設定して欲しい。
> 3. 2を行ったのち、.envファイルがカレントディレクトリに作成されるが、それをコピーして.env.localと.env.testingを作成して欲しい。作成後は元の.envを削除して構わない。
> 4. PNPMを用いてenv-cmdをdev-dependancyとしてインストールしてほしい。
> 5. package.jsonのscriptsにpnpmとenv-cmdとprismaコマンドを用いて、.env.localを読み込んでローカル環境のマイグレーション・ロールバック処理を実装してほしい。
> 6. 5と同様にして、.env.testingを読み込んでテスト環境のマイグレーション・ロールバック処理を実装してほしい。ただしローカル環境と異なり、generateとseedはskipするようにしてほしい。
結果として、MySQL版の.env.local
・.env.testing
、接続情報だけのschema.prisma
が生成されました。
package.json
には指示通り、env-cmd
とpnpm
を用いたPrismaの各種コマンドが追加されていました。
後述するDBマイグレーションでは、ここで作成したコマンドを実行します。
【コード】作成したNext.jsプロジェクト構成 (一部省略、Prismaディレクトリ追加)
.
├── .tool-versions
└── todo_app
├── .env.local --> 追加
├── .env.testing --> 追加
├── .gitignore
├── .next
├── docs
│ └── todo_app_swagger.yml
├── next-env.d.ts
├── next.config.ts
├── package.json
├── pnpm-lock.yaml
├── postcss.config.mjs
├── prisma
│ └── schema.prisma --> 追加
├── public
├── README.md
├── src
│ └── app
└── tsconfig.json
【コード】DBマイグレーション処理を追加したpackage.json
{
"name": "todo_app",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"db:migrate:local": "env-cmd -f .env.local pnpm prisma migrate dev",
"db:reset:local": "env-cmd -f .env.local pnpm prisma migrate reset",
"db:generate:local": "env-cmd -f .env.local pnpm prisma generate",
"db:seed:local": "env-cmd -f .env.local pnpm prisma db seed",
"db:migrate:test": "env-cmd -f .env.testing pnpm prisma migrate dev --skip-generate --skip-seed",
"db:reset:test": "env-cmd -f .env.testing pnpm prisma migrate reset --skip-generate --skip-seed"
},
"dependencies": {
"@prisma/client": "^6.15.0",
"next": "15.5.2",
"prisma": "^6.15.0",
"react": "19.1.0",
"react-dom": "19.1.0"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"env-cmd": "^11.0.0",
"tailwindcss": "^4",
"typescript": "^5"
}
}
3. Prisma DBスキーマ実装
Prismaのセットアップが完了したので、生成したschema.prisma
にDBテーブル設計を追加していきます。
先述の通り、前回作成したSwaggerの内容を考慮して生成させるため、プロンプトではSwaggerの内容を事前に把握させます。
【コード】入力プロンプトその3
> docs/todo_app_swagger.ymlの内容を把握し、記載されているAPIレスポンス内容を簡単にレポートしてほしい。
次にその内容を考慮に入れてPrisma DBスキーマを生成するように命令します。
今回はSwaggerで定義された単体取得 (GET: /todos/{id}
) のレスポンス内容を参考に設計させています。
【コード】参考にしたSwagger APIレスポンス (単体取得API)
components:
schemas:
Todo:
type: object
required:
- id
- isPublic
- title
- description
- createdAt
- updatedAt
additionalProperties: false
properties:
id:
type: integer
minimum: 1
description: Todoタスクの一意識別子
examples:
- 1
isPublic:
type: boolean
description: Todoタスクの公開ステータス
examples:
- true
title:
type: string
description: Todoタスクのタイトル
maxLength: 100
minLength: 1
examples:
- "API仕様書の作成"
description:
type: string
description: Todoタスクの詳細説明
maxLength: 1000
minLength: 1
examples:
- "Todo APIの包括的なAPI仕様書を作成する"
createdAt:
type: string
format: date-time
description: Todoタスクが作成された日時
examples:
- "2023-12-01T10:00:00Z"
updatedAt:
type: string
format: date-time
description: Todoタスクが最後に更新された日時
examples:
- "2023-12-01T10:00:00Z"
【コード】入力プロンプトその4
> prisma/schema.prismaについて、把握したdocs/todo_app_swagger.ymlの単体取得APIレスポンス内容を参考に、Todoデータテーブルを追加して欲しい。
> その際に以下の点を準拠すること。
>
> 1. テーブル名はTodoとすること。
> 2. 各種カラムはAPIレスポンスに準拠する。
> 3. idは整数値でオートインクリメントする。
> 4. isPublicのデフォルト値はtrueとすること。
> 5. createdAt・updatedAtのデフォルト時間はMySQL DB時間に設定して欲しい。
> 6. Todoテーブルスキーマでは、@mapを用いてテーブル名は複数形・スネークケース、各種カラムは単数系・スネークケースにすること。
スキーマを追加したschema.prisma
は以下のようになりました。
【コード】todo_app/prisma/schema.prisma
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model Todo {
id Int @id @default(autoincrement()) @map("id")
isPublic Boolean @default(true) @map("is_public")
title String @db.VarChar(100) @map("title")
description String @db.VarChar(1000) @map("description")
createdAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP")) @db.Timestamp(0) @map("created_at")
updatedAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")) @db.Timestamp(0) @map("updated_at")
@@map("todos")
}
4. DockerでのDB永続化
TodoアプリケーションのDBスキーマが完成したので、次にこのDBテーブルを永続化させたいと思います。
今回はDockerでMySQLコンテナを作成し、ローカル用・テスト用のDBを構築します。
4-1. Docker Compose YAMLの生成
先にDocker Compose設定をやってもらいます。ここがかなり調整に時間がかかった感じあります。
DB設定情報は以下にまとめています。
テスト用DBは同じローカルと同じMySQLコンテナ内に作成し、Docker Entrypointのinit.sql
で作成します。
今回はDBのポートを3307
にしていますが、これは今3306
を別途で使用しているため、この措置を行っています。3306
が使える場合は変更しなくても大丈夫です。
【表】各種環境ごとのDB設定
環境変数 | ローカルDB | テストDB |
---|---|---|
DB_HOST |
localhost |
localhost |
DB_PORT |
3307 |
3307 |
DB_NAME |
todo_app_local |
todo_app_testing |
DB_USER |
app |
app |
DB_PASSWORD |
app |
app |
プロンプトでは、Docker Compose設定YAML (compose.yml
) を作成し、流れでEntrypointファイル (init.sql
) も作成してもらいます。
また作成したDocker Compose設定がベストプラクティスかどうかも検証し、足りない処理は追記してもらいます。
【コード】入力プロンプトその5
> schema.prisma用のMySQLコンテナをDocker Composeで作成したい。
> 以下の要件を満たすDocker Compose設定をcompose.ymlとして出力してほしい。
>
> 1. サービス名はmysqlとし、コンテナイメージはmysql:8.0、コンテナ名はtodo-app-dbとする。
> 2. MySQLルートユーザー名はroot、MySQLルートパスワードはrootとする。
> 3. MySQLユーザー名はapp、MySQLパスワードはappとする。また接続するDB名はtodo_app_localとする。
> 4. 接続ポートでは3306を使わずに3307を解放し、MySQLのTCPポートとして3307を使用する。
> 5. MySQLのタイムゾーンとして、日本時間になるように設定して欲しい。
> 6. カレントディレクトリにopsディレクトリを作成し、MySQLコンテナのDB永続化ディレクトリdb-data、Docker Entrypointとなるinit.sqlを作成して欲しい。
> 7. 5で作成するinit.sqlでは、まずtodo_app_testing DBがない場合作成し、その後appユーザーについて、全てのDB全ての権限を付与する処理を実装してほしい。
> 8. Dockerのベストプラクティスを満たしているかを確認し、不足している内容を追記してほしい。
今回生成した内容は以下のようになりました。
compose.yml
・init.sql
は以下のように生成されました。
思ったよりcompose.yml
が初めより多く修正されましたが、単純にDockerコンテナを起動するだけならここまでしなくても大丈夫です。
compose.yml
でコメントがついている部分は後付けでClaudeに修正された内容なので、その部分は削除しても動きます (port
は3307:3307
で動きます)。
【コード】Docker関連のディレクトリ構成 (一部省略)
.
├── .tool-versions
├── compose.yml --> 追加
├── ops
│ ├── db-data --> MySQLコンテナのDBを永続化
│ ├── init.sql --> Entrypoint
│ └── mysql-config --> 外部の別設定があれば使用 (今回は使わない)
└── todo_app
【コード】生成したcompose.yml
services:
mysql:
image: mysql:8.0
container_name: todo-app-db
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root}
MYSQL_DATABASE: todo_app_local
MYSQL_USER: app
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-app}
MYSQL_TCP_PORT: 3307
TZ: Asia/Tokyo
# セキュリティ設定
MYSQL_ROOT_HOST: localhost
# パフォーマンス設定
MYSQL_INNODB_BUFFER_POOL_SIZE: 256M
MYSQL_MAX_CONNECTIONS: 100
ports:
- "127.0.0.1:3307:3307" # セキュリティ: localhostのみでバインド
volumes:
- ./ops/db-data:/var/lib/mysql
- ./ops/init.sql:/docker-entrypoint-initdb.d/init.sql
- ./ops/mysql-config:/etc/mysql/conf.d # 設定ファイル用
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --default-authentication-plugin=mysql_native_password
- --innodb-buffer-pool-size=256M
- --max-connections=100
- --slow-query-log=1
- --slow-query-log-file=/var/log/mysql/slow.log
- --long-query-time=2
- --log-error=/var/log/mysql/error.log
- --general-log=0
- --bind-address=0.0.0.0
restart: unless-stopped
# ヘルスチェック
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "app", "-p${MYSQL_PASSWORD:-app}"]
timeout: 20s
retries: 10
interval: 30s
start_period: 40s
# リソース制限
deploy:
resources:
limits:
memory: 512M
cpus: '0.5'
reservations:
memory: 256M
cpus: '0.25'
# ログ設定
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
【コード】Docker Entrypoint SQL
-- テスト用データベースの作成
CREATE DATABASE IF NOT EXISTS todo_app_testing;
-- appユーザーに全てのデータベース権限を付与
GRANT ALL PRIVILEGES ON *.* TO 'app'@'%';
-- 権限の反映
FLUSH PRIVILEGES;
4-2. Docker Compose操作用Makefile
次にDockerコンテナを操作するためのMakefile
を作成します。
これはpackage.json
のscripts
に追記してもいいと思いますが、自分のバックエンド開発経験上あると便利なので作成させています。
別に作らなくてもコマンドでやればいいと思います。
【コード】入力プロンプトその6
> composer.ymlについて、以下のDocker処理を実現するMakefileを実装してほしい。
>
> 1. compose.ymlの全てのDockerコンテナをバックグラウンド起動
> 2. compose.ymlの全てのDockerコンテナについて、再起動
> 3. compose.ymlの全てのDockerコンテナについて、変更差分を反映
> 4. 全てのDockerコンテナについて、イメージやキャッシュを削除した上で全て削除する
生成されたMakefile
は以下のようになりました。
make help
でヘルプ表示までしてくれてるので、思ってたよりいい感じに仕上がりました。
【コード】Docker Compose操作用Makefile
.PHONY: up restart rebuild clean help
# compose.ymlの全てのDockerコンテナをバックグラウンド起動
up:
@echo "Starting all Docker containers in background..."
docker compose up -d
# compose.ymlの全てのDockerコンテナについて、再起動
restart:
@echo "Restarting all Docker containers..."
docker compose restart
# compose.ymlの全てのDockerコンテナについて、変更差分を反映
rebuild:
@echo "Rebuilding and updating all Docker containers..."
docker compose down
docker compose up -d --build
# 全てのDockerコンテナについて、イメージやキャッシュを削除した上で全て削除する
clean:
@echo "Stopping and removing all containers, images, and volumes..."
docker compose down --volumes --remove-orphans
docker system prune -af
@echo "All Docker containers, images, and caches have been removed."
# ヘルプ表示
help:
@echo "Available commands:"
@echo " up - Start all Docker containers in background"
@echo " restart - Restart all Docker containers"
@echo " rebuild - Stop, rebuild, and start all containers with changes"
@echo " clean - Remove all containers, images, volumes, and caches"
@echo " help - Show this help message"
4-3. Prisma設定変更
最後にMySQLコンテナとPrismaを接続させるため、.env.local
と.env.testing
のDATABASE_URL
を修正してもらいます。
prisma init
でデフォルト作成される.env
のDATABASE_URL
では、ホスト以外が適当に作成されていたので、それ以外の部分を全て適したものに修正します。
【コード】元々の.env
DATABASE_URL="mysql://username:password@localhost:3306/db_name"
【コード】入力プロンプトその7
> composer.ymlで定義したMySQLコンテナとPrismaを連携させるため、
> todo_app/.env.localとtodo_app/.env.testingのDATABASE_URLを修正してほしい。
> 以下の点に準拠して修正すること。
>
> 1. .env.localでは、DBユーザー名をapp、DBパスワードをapp、ポートを3307、DB名をtodo_app_localとする。
> 2. .env.testingでは、DBユーザー名をapp、DBパスワードをapp、ポートを3307、DB名をtodo_app_testingとする。
修正後の各種.env
は以下のようになりました。
【コード】Claudeに修正してもらった各種.envファイル
DATABASE_URL="mysql://app:app@localhost:3307/todo_app_local"
DATABASE_URL="mysql://app:app@localhost:3307/todo_app_testing"
5. Prisma DBマイグレーション
MySQLコンテナとPrisma連携準備ができたので、いよいよPrismaのマイグレーションを実行します。
ここからはプロンプトでやるほどではないので、手動でコマンド実行します。
5-1. ローカルDBマイグレーション
先にDockerコンテナを起動し、その後pnpm db:migrate:local
をプロジェクト直下で実行します。
またPrismaマイグレーションディレクトリの名前は初回なので、init
とします (CLIコマンド上でも指定できます)。
【コード】pnpm db:migrate:localの結果
> todo_app@0.1.0 db:migrate:local /xxxxxx/todo_app
> env-cmd -f .env.local pnpm prisma migrate dev
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "todo_app_local" at "localhost:3307"
✔ Enter a name for the new migration: … init
Applying migration `20250909081849_init`
The following migration(s) have been created and applied from new schema changes:
prisma/migrations/
└─ 20250909081849_init/
└─ migration.sql
Your database is now in sync with your schema.
✔ Generated Prisma Client (v6.15.0) to ./node_modules/.pnpm/@prisma+client@6.15.0_prisma@6.15.0_typescript@5.9.2__typescript@5.9.2/node_modules/@prisma/client in 45ms
5-2. テストDBマイグレーション
pnpm db:migrate:test
でも同様の結果になりますが、マイグレーションファイルをinit
とは別に作成してしまいます。
どうせならローカル環境用マイグレーション履歴をそのまま転用したいです。
Claudeにとりあえず方法があるか聞いてみます。
【コード】入力プロンプトその8
> todo_appプロジェクトでpackage.jsonのpnpm db:migrate:localを用いて、ローカルDBをマイグレーションし成功した。
>
> テストDBではローカルDBのマイグレーション履歴をインポートし、個別にマイグレーションをせずともDBを構築できるようにしたい。
>
> その方法があれば提案して欲しい。
得られた推奨方法としてprisma migrate deploy
をテスト用DBに適用する方法があるようでした。
つまりはprisma migrate dev
はローカルでのみ実行し、生成されるprisma/migrations
のSQL処理だけをテストDBに反映するという感じでした。
これならテストDBのマイグレーションで履歴が増えることはなさそうです。
これくらいなら手動で直したほうが早いので、自分で直してます。
【コード】todo_app/package.json
{
"name": "todo_app",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"db:migrate:local": "env-cmd -f .env.local pnpm prisma migrate dev",
"db:reset:local": "env-cmd -f .env.local pnpm prisma migrate reset",
"db:generate:local": "env-cmd -f .env.local pnpm prisma generate",
"db:seed:local": "env-cmd -f .env.local pnpm prisma db seed",
- "db:migrate:test": "env-cmd -f .env.testing pnpm prisma migrate dev --skip-generate --skip-seed",
+ "db:migrate:test": "env-cmd -f .env.testing pnpm prisma migrate deploy",
"db:reset:test": "env-cmd -f .env.testing pnpm prisma migrate reset --skip-generate --skip-seed",
},
"dependencies": {
"@prisma/client": "^6.15.0",
"next": "15.5.2",
"prisma": "^6.15.0",
"react": "19.1.0",
"react-dom": "19.1.0"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"env-cmd": "^11.0.0",
"tailwindcss": "^4",
"typescript": "^5"
}
}
package.json
修正後に実行したpnpm db:migrate:test
の結果は以下のようになりました。
マイグレーション履歴の入力が要求されなくなり、少し処理が楽になった感じがあります。
【コード】pnpm db:migrate:testの結果
> todo_app@0.1.0 db:migrate:test /Users/xxxxx/todo_app
> env-cmd -f .env.testing pnpm prisma migrate deploy
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "todo_app_testing" at "localhost:3307"
1 migration found in prisma/migrations
No pending migrations to apply.
5-3. ちゃんとマイグレーションできてるか
TablePlusでそれぞれのDBでTodoテーブルが作成されているか確認してみました。
いずれの方法でもテーブルの存在確認ができているので、成功です。
【図】各種DB可視化 (TablePlusを使用。上段: ローカルDB、下段: テストDB)
最後に
今回はSwaggerに引き続き、PrismaでのDB設計をAIだけでやってみました。
Prismaを使ったマイグレーションやDockerの設定などは、自分が経験したことをそのままプロンプトにしているため、
特に技術的な新鮮さはありませんが、使い方次第で楽にテーブル設計できそうな感じがしました。
ただしセキュリティなど重要な部分を担う処理では、AIに任せるべきではなく、自分自身で実装した方が安全です。
また今回はSwaggerを元にDB設計をやるというアプローチを試してみましたが、状況によってはかなり楽だなという印象を受けました。
APIレスポンスが必ずしもDBテーブル内容と一致するわけではないので、そういう場合を除き、SwaggerからDB設計まで一元化したフローで開発に臨めることはいい利点になりそうです。
これのおかげなのか、プロンプトが綺麗になってきているのも案外プラスかなと思ってます。
次はいよいよNext.jsで今までの設計を使ってAPIを作らせてみようと思います。
試しにTDDでやってみたいので、できたらまた見てもらえるとありがたいです。
それではまた。
参考文献
- Docker Compose healthcheck: 公式ドキュメント。
- Docker Compose deploy: 公式ドキュメント。
- Docker Compose logging: 公式ドキュメント。
- Dockerのlogging driver: それぞれの特徴と使いどころ(json-file, syslog, journald, fluentd): Docker Logのドライバー解説。
- 15.8.3.1 InnoDB バッファプールサイズの構成: MySQL8.0日本語公式ドキュメント。
- 7.1.8 Server System Variables: MySQL8.0公式ドキュメント。
Discussion