Rumah pangkalan data tutorial mysql MySQL数据库inset性能优化_MySQL

MySQL数据库inset性能优化_MySQL

May 27, 2016 pm 01:46 PM

我们在使用中MySQL的时候难免会遇到大批量数据inset的情况,通常最简单的方法就是写一个insert,然后通过循环给变量赋值,批量插入数据库:

                //save rddform
                for (int i = 0; i < rddformlist.Count; i++)
                {
                    string cmdText = "insert into rddform 
                    (ID,CreatedTime,ModifiedTime,CreatedBy,ModifiedBy,FormType) values 
                    (&#39;" + rddformlist[i].RddFormGuid + "&#39;,&#39;" + rddformlist[i].CreateTime + "&#39;,&#39;"
                     + rddformlist[i].ModifyTime + "&#39;,&#39;" + rddformlist[i].CreateBy + "&#39;,&#39;" 
                     + rddformlist[i].ModifyBy + "&#39;," + rddformlist[i].FormType + ")";
                    MySqlCommand mysqlcom = new MySqlCommand(cmdText, mysqlcon);
                    mysqlcom.Transaction = trans;  //绑定事务           
                    mysqlcom.ExecuteNonQuery();
                }
Salin selepas log masuk

经过方法经过亲测,性能不太好,本地大概是一秒insert20条数据,云上大概是一秒insert3条数据。两千条数据本地大概就要一分半,云上大概十几分,显然速度太慢了。

现在我们改为多条数据合并插入,就是用一个insert语句插入所有的数据:

//save rddform
                for (int i = 0; i < rddformlist.Count; i++)
                {
                    strRddForm.Append("(&#39;" + rddformlist[i].RddFormGuid + "&#39;,&#39;" 
                    + rddformlist[i].CreateTime + "&#39;,&#39;" + rddformlist[i].ModifyTime 
                    + "&#39;,&#39;" + rddformlist[i].CreateBy + "&#39;,&#39;" + rddformlist[i].ModifyBy 
                    + "&#39;,&#39;" + rddformlist[i].FormType + "&#39;)");
                    if (i<rddformlist.Count-1)
                    {
                        strRddForm.Append(",");
                    }
                }
                MySqlCommand rddformcom = new MySqlCommand(strRddForm.ToString(), mysqlcon);
                rddformcom.Transaction = trans;  //绑定事务           
                rddformcom.ExecuteNonQuery();
Salin selepas log masuk

亲测之后两千条本地真的是秒插,云上大概一秒多,这速度让人根本没有拒绝的理由,果断的把代码改了。当然速度可能根据个人机器以及网络环境因素有关,下面是网上牛人做的性能对比

注意事项:
 SQL语句是有长度限制,在进行数据合并在同一SQL中务必不能超过SQL长度限制,通过max_allowed_packet配置可以修改,默认是1M,测试时修改为8M。
 事务需要控制大小,事务太大可能会影响执行的效率。MySQL有innodb_log_buffer_size配置项,超过这个值会把innodb的数据刷到磁盘中,这时,效率会有所下降。所以比  较好的做法是,在数据达到这个这个值前进行事务提交。

以上就是MySQL数据库inset性能优化_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mengoptimumkan prestasi pertanyaan MySQL dalam PHP? Bagaimana untuk mengoptimumkan prestasi pertanyaan MySQL dalam PHP? Jun 03, 2024 pm 08:11 PM

Prestasi pertanyaan MySQL boleh dioptimumkan dengan membina indeks yang mengurangkan masa carian daripada kerumitan linear kepada kerumitan logaritma. Gunakan PreparedStatements untuk menghalang suntikan SQL dan meningkatkan prestasi pertanyaan. Hadkan hasil pertanyaan dan kurangkan jumlah data yang diproses oleh pelayan. Optimumkan pertanyaan penyertaan, termasuk menggunakan jenis gabungan yang sesuai, membuat indeks dan mempertimbangkan untuk menggunakan subkueri. Menganalisis pertanyaan untuk mengenal pasti kesesakan; gunakan caching untuk mengurangkan beban pangkalan data;

Pengoptimuman prestasi dan teknologi pengembangan mendatar rangka kerja Go? Pengoptimuman prestasi dan teknologi pengembangan mendatar rangka kerja Go? Jun 03, 2024 pm 07:27 PM

Untuk meningkatkan prestasi aplikasi Go, kami boleh mengambil langkah pengoptimuman berikut: Caching: Gunakan caching untuk mengurangkan bilangan akses kepada storan asas dan meningkatkan prestasi. Concurrency: Gunakan goroutine dan saluran untuk melaksanakan tugas yang panjang secara selari. Pengurusan Memori: Urus memori secara manual (menggunakan pakej yang tidak selamat) untuk mengoptimumkan lagi prestasi. Untuk menskalakan aplikasi, kami boleh melaksanakan teknik berikut: Penskalaan Mendatar (Penskalaan Mendatar): Menggunakan contoh aplikasi pada berbilang pelayan atau nod. Pengimbangan beban: Gunakan pengimbang beban untuk mengedarkan permintaan kepada berbilang contoh aplikasi. Perkongsian data: Edarkan set data yang besar merentas berbilang pangkalan data atau nod storan untuk meningkatkan prestasi pertanyaan dan kebolehskalaan.

Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4 Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4 Dec 09, 2024 am 11:42 AM

Salah satu perubahan utama yang diperkenalkan dalam MySQL 8.4 (keluaran LTS terkini pada 2024) ialah pemalam &quot;Kata Laluan Asli MySQL&quot; tidak lagi didayakan secara lalai. Selanjutnya, MySQL 9.0 mengalih keluar pemalam ini sepenuhnya. Perubahan ini mempengaruhi PHP dan apl lain

Bagaimana untuk membuat jadual MySQL menggunakan PHP? Bagaimana untuk membuat jadual MySQL menggunakan PHP? Jun 04, 2024 pm 01:57 PM

Mencipta jadual MySQL menggunakan PHP memerlukan langkah berikut: Sambung ke pangkalan data. Buat pangkalan data jika ia tidak wujud. Pilih pangkalan data. Buat jadual. Laksanakan pertanyaan. Tutup sambungan.

Pengoptimuman prestasi dalam seni bina perkhidmatan mikro Java Pengoptimuman prestasi dalam seni bina perkhidmatan mikro Java Jun 04, 2024 pm 12:43 PM

Pengoptimuman prestasi untuk seni bina perkhidmatan mikro Java termasuk teknik berikut: Gunakan alat penalaan JVM untuk mengenal pasti dan melaraskan kesesakan prestasi. Optimumkan pengumpul sampah dan pilih serta konfigurasikan strategi GC yang sepadan dengan keperluan aplikasi anda. Gunakan perkhidmatan caching seperti Memcached atau Redis untuk meningkatkan masa tindak balas dan mengurangkan beban pangkalan data. Gunakan pengaturcaraan tak segerak untuk meningkatkan keselarasan dan responsif. Pisahkan perkhidmatan mikro, pecahkan aplikasi monolitik yang besar kepada perkhidmatan yang lebih kecil untuk meningkatkan kebolehskalaan dan prestasi.

Bagaimana untuk memadam data dari jadual MySQL menggunakan PHP? Bagaimana untuk memadam data dari jadual MySQL menggunakan PHP? Jun 05, 2024 pm 12:40 PM

PHP menyediakan kaedah berikut untuk memadam data dalam jadual MySQL: DELETE statement: digunakan untuk memadamkan baris keadaan yang sepadan daripada jadual. Pernyataan TRUNCATETABLE: digunakan untuk mengosongkan semua data dalam jadual, termasuk ID yang dinaikkan secara automatik. Kes praktikal: Anda boleh memadamkan pengguna daripada pangkalan data menggunakan borang HTML dan kod PHP. Borang menyerahkan ID pengguna dan kod PHP menggunakan pernyataan DELETE untuk memadam rekod yang sepadan dengan ID daripada jadual pengguna.

Bagaimana untuk menyediakan kolam sambungan MySQL menggunakan PHP? Bagaimana untuk menyediakan kolam sambungan MySQL menggunakan PHP? Jun 04, 2024 pm 03:28 PM

Menyediakan kumpulan sambungan MySQL menggunakan PHP boleh meningkatkan prestasi dan kebolehskalaan. Langkah-langkahnya termasuk: 1. Pasang sambungan MySQLi 2. Buat kelas kumpulan sambungan 3. Tetapkan konfigurasi kumpulan sambungan 5. Dapatkan dan lepaskan sambungan; Dengan pengumpulan sambungan, aplikasi boleh meningkatkan prestasi dengan mengelak daripada membuat sambungan pangkalan data baharu untuk setiap permintaan.

Analisis soalan lazim tentang pengoptimuman prestasi PHP Analisis soalan lazim tentang pengoptimuman prestasi PHP Jun 05, 2024 pm 05:10 PM

Tingkatkan prestasi PHP dengan mendayakan OPCache ke cache kod yang disusun. Gunakan rangka kerja caching seperti Memcached untuk menyimpan data yang kerap digunakan. Kurangkan pertanyaan pangkalan data (cth. dengan menyimpan hasil pertanyaan dalam cache). Optimumkan kod (cth. gunakan fungsi sebaris). Gunakan alat analisis prestasi seperti XHProf untuk mengenal pasti kesesakan prestasi.

See all articles