Go 言語を使用して MySQL データベースで ACID 操作を実行する方法
インターネットの急速な発展とデジタル化に伴い、さまざまなビッグデータの形成と処理が現在最も重要なことの一つとなっています。データ処理において、リレーショナル データベースは重要な役割を果たします。 MySQL は現在最も人気のあるリレーショナル データベースの 1 つであり、ビッグ データ処理でよく使用されます。 ACID (原子性、一貫性、分離性、耐久性) は、リレーショナル データベースの最も基本的なトランザクション処理機能であり、データに対して何らかの操作を実行するときに従わなければならない原則でもあります。この記事では、Go 言語を使用して MySQL データベースで ACID 操作を実行する方法を紹介します。
1. 必要なパッケージをインストールする
MySQL データベース操作に Go 言語を使用し始める前に、いくつかの必要なパッケージをインストールする必要があります。最も一般的なのは mysql ドライバーで、次のコマンドを使用してインストールできます。
go get github.com/go-sql-driver/mysql
MySQL 開発に Gorm フレームワークを使用している場合は、次のパッケージ
go get -u github.com/jinzhu/gorm go get -u github.com/go-sql-driver/mysql
2 をインストールする必要があります。データベースへの接続
Go 言語を使用して MySQL データベース操作を実行する前に、MySQL データベースに接続する必要があります。以下は、MySQL データベースに接続するためのサンプルコードです。
import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func main(){ db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/database_name") if err != nil { panic(err.Error()) } }
これは、最も基本的な接続コードの例です。このうち、mysql はドライバーの名前、root:password はユーザー名とパスワード、127.0.0.1:3306 はサーバーのアドレスとポート番号、database_name は接続するデータベースの名前です。接続プロセスを使用する場合は、接続タイムアウトなどの他のパラメーターも使用する必要があります。特定のパラメータは、関連ドキュメントを参照して変更できます。
3. トランザクション操作
トランザクション操作とは、データベース内の一連の操作を指し、すべてが正常に実行された後にのみデータベースに適用されます。 Go では、SQL パッケージの Tx を使用してトランザクション操作を実行できます。以下は、基本的なトランザクション操作の例です。
import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main(){ db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/database_name") if err != nil { panic(err.Error()) } tx, err := db.Begin() if err != nil { fmt.Println(err) } _, err = tx.Exec("INSERT INTO table_name (column1, column2) VALUES (?, ?)", value1, value2) if err != nil { fmt.Println(err) tx.Rollback() } else { _, err = tx.Exec("UPDATE table_name SET column1 = ? WHERE column2 = ?", value1, value2) if err != nil { fmt.Println(err) tx.Rollback() } else { tx.Commit() } } }
これは基本的なトランザクション操作の例です。このプログラムでは 2 つの操作が実行されます。1 つ目はデータの挿入で、2 つ目はデータの更新です。両方の操作が正常に実行されると、トランザクションはコミットされます。いずれかの操作が失敗すると、トランザクションはロールバックされ、すべての変更が元に戻されます。
4. 分離レベル
トランザクション操作を実行する場合、分離レベルを考慮する必要があります。 MySQL では分離レベルを、非コミット読み取り (コミットされていない読み取り)、コミット読み取り (コミットされた読み取り)、反復可能読み取り (反復可能読み取り)、およびシリアライズ可能 (シリアル化可能) の 4 つのレベルに分けています。デフォルトで使用される分離レベルは、Repeatable Read です。トランザクションを使用する場合、DB.Transaction() メソッドを使用して分離レベルを指定できます。以下は例です:
func main() { db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/database_name") if err != nil { panic(err.Error()) } txOptions := &sql.TxOptions{ Isolation: sql.LevelSerializable, } tx, err := db.BeginTx(context.Background(), txOptions) if err != nil { panic(err.Error()) } }
この例では、シリアル化可能レベルの分離レベルを選択しました。分離レベルを変更する必要がある場合は、LevelSerializable を変更するだけです。
5. 概要
この記事では、Go 言語を使用して MySQL データベースで ACID 操作 (データベースへの接続、トランザクション操作、分離レベルなど) を実行する方法を紹介しました。コードの正確性を保証するには、ACID ガイドラインに従って、異常な状態が発生したときにデータが正しく保存されるようにする必要があります。同時に、分離レベルを使用してデータベースの一貫性と信頼性を判断する方法も学ぶ必要があります。
以上がGo 言語を使用して MySQL データベースで ACID 操作を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

GO言語で構造を定義する2つの方法:VARとタイプのキーワードの違い。構造を定義するとき、GO言語はしばしば2つの異なる執筆方法を見ます:最初...

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

SQL.Openを使用する場合、DSNがエラーを報告しないのはなぜですか? GO言語では、sql.open ...
