Rumah > Artikel > pangkalan data > MySQL dan PostgreSQL: Bagaimana untuk meningkatkan prestasi penulisan pangkalan data?
MySQL dan PostgreSQL: Bagaimana untuk meningkatkan prestasi penulisan pangkalan data?
Prestasi pangkalan data adalah penting apabila membangunkan dan mengurus aplikasi berskala besar. Terutama apabila melibatkan operasi penulisan data dalam jumlah yang besar, kami perlu mengoptimumkan prestasi penulisan pangkalan data untuk meningkatkan kelajuan tindak balas dan daya pemprosesan aplikasi. Artikel ini akan memberi tumpuan kepada cara untuk meningkatkan prestasi penulisan pangkalan data MySQL dan PostgreSQL melalui beberapa petua dan amalan terbaik.
Untuk situasi di mana sejumlah besar data perlu dimasukkan, memasukkan sekeping data akan menyebabkan overhed yang besar. Sebaliknya, menggunakan operasi sisipan kelompok boleh mengurangkan bilangan interaksi pangkalan data dengan ketara, dengan itu meningkatkan prestasi tulis. Berikut ialah contoh kod untuk sisipan pukal menggunakan MySQL dan PostgreSQL:
MySQL contoh:
import mysql.connector def batch_insert(conn, data): cursor = conn.cursor() sql = "INSERT INTO table_name (column1, column2) VALUES (%s, %s)" cursor.executemany(sql, data) conn.commit() cursor.close() # 使用批量插入操作 conn = mysql.connector.connect(user='username', password='password', host='localhost', database='database_name') data = [('value1', 'value2'), ('value3', 'value4')...] # 要插入的数据列表 batch_insert(conn, data)
PostgreSQL contoh:
import psycopg2 def batch_insert(conn, data): cursor = conn.cursor() sql = "INSERT INTO table_name (column1, column2) VALUES (%s, %s)" cursor.executemany(sql, data) conn.commit() cursor.close() # 使用批量插入操作 conn = psycopg2.connect(user='username', password='password', host='localhost', database='database_name') data = [('value1', 'value2'), ('value3', 'value4')...] # 要插入的数据列表 batch_insert(conn, data)
Sesuatu transaksi yang memastikan sama ada unit operasi bagi set pangkalan data operasi semua akan berjaya, atau semua gagal. Menggunakan transaksi boleh meningkatkan prestasi penulisan dan ketekalan data pangkalan data. Berikut ialah contoh kod untuk operasi urus niaga menggunakan MySQL dan PostgreSQL:
MySQL contoh:
import mysql.connector def transaction_insert(conn, data): cursor = conn.cursor() try: conn.start_transaction() for record in data: sql = "INSERT INTO table_name (column1, column2) VALUES (%s, %s)" cursor.execute(sql, record) conn.commit() except mysql.connector.Error as err: conn.rollback() print("Transaction failed: {}".format(err)) finally: cursor.close() # 使用事务插入数据 conn = mysql.connector.connect(user='username', password='password', host='localhost', database='database_name') data = [('value1', 'value2'), ('value3', 'value4')...] # 要插入的数据列表 transaction_insert(conn, data)
PostgreSQL contoh:
import psycopg2 def transaction_insert(conn, data): cursor = conn.cursor() try: conn.autocommit = False for record in data: sql = "INSERT INTO table_name (column1, column2) VALUES (%s, %s)" cursor.execute(sql, record) conn.commit() except psycopg2.Error as err: conn.rollback() print("Transaction failed: {}".format(err)) finally: cursor.close() # 使用事务插入数据 conn = psycopg2.connect(user='username', password='password', host='localhost', database='database_name') data = [('value1', 'value2'), ('value3', 'value4')...] # 要插入的数据列表 transaction_insert(conn, data)
melaraskan penimbal dan Konfigurasi log tulis untuk meningkatkan prestasi tulis. Dengan meningkatkan saiz penimbal dan melumpuhkan log tulis, anda boleh mengurangkan bilangan operasi I/O dan capaian cakera, dengan itu meningkatkan prestasi penulisan pangkalan data. Berikut ialah contoh konfigurasi untuk MySQL dan PostgreSQL:
MySQL contoh:
# my.cnf [mysqld] innodb_flush_log_at_trx_commit = 0 innodb_buffer_pool_size = 8G
PostgreSQL contoh:
# postgresql.conf shared_buffers = 8GB fsync = off full_page_writes = off
Perlu diambil perhatian bahawa konfigurasi melaraskan penimbal dan log penulisan perlu ditala mengikut situasi sebenar, dan selepas memahami risiko berkaitan beroperasi atas dasar.
Dengan menggunakan operasi sisipan pukal, transaksi dan teknik seperti melaraskan penimbal dan menulis log, kami boleh meningkatkan prestasi penulisan pangkalan data MySQL dan PostgreSQL dengan ketara. Walau bagaimanapun, untuk senario dan keperluan aplikasi yang berbeza, strategi pengoptimuman yang berbeza mungkin diperlukan. Oleh itu, dalam aplikasi sebenar, kita perlu melakukan ujian prestasi dan pengoptimuman mengikut keadaan tertentu untuk mencapai prestasi penulisan pangkalan data yang terbaik.
Atas ialah kandungan terperinci MySQL dan PostgreSQL: Bagaimana untuk meningkatkan prestasi penulisan pangkalan data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!