cari
Rumahpangkalan datatutorial mysqlOracle交换分区对数据的加载提速案例

oracle交换分区对数据的加载提速案例环境:os:linuxdb:oracle10g其中一个库的数据加载非常慢,如何能提高数据的加载速度呢?下

Oracle交换分区对数据的加载提速案例

环境:

os:linux

db:oracle10g

其中一个库的数据加载非常慢,如何能提高数据的加载速度呢?下面是一个小例子。

首先统计加载数据表所涉及的sql,这是做下面的基础。

使用表tabname1的sql如下几个:

SELECT COUNT(*)
  FROM (SELECT RPL.ITEMCODE, RPL.CATALOGID
          FROM tabname RPL
         WHERE RPL.L3COLUMN = :1
           and RPL.SUPPLIERID = :2
           and RPL.STATDATE = TO_DATE(sysdate-2, 'YYYY-MM-DD')
         GROUP BY (RPL.CATALOGID, RPL.ITEMCODE)) TEMP

SELECT SUM(LISTNUM) AS lSUM, SUM(CLICKNUM) AS CSUM
  FROM tabname RPL
 WHERE RPL.L3COLUMN = :1
   and RPL.SUPPLIERID = :2
   and RPL.STATDATE = TO_DATE(:3, 'YYYY-MM-DD')
  
select TMPB.*
  from (SELECT TMPA.*, ROWNUM rownum_
          FROM (SELECT TEMP.LSUM,
                       TEMP.CSUM,
                       TEMP.ITEMCODE,
                       TEMP.CATALOGID,
                       RPO.ORDERNUM,
                       RPO.ORDER_PRO_NUM,
                       TEMP.PRODUCTID
                  FROM (SELECT SUM(LISTNUM) AS lSUM,
                               SUM(CLICKNUM) AS CSUM,
                               RPL.ITEMCODE,
                               RPL.CATALOGID,
                               RPL.PRODUCTID
                          FROM tabname1 RPL
                         WHERE RPL.L3COLUMN = :1
                           and RPL.SUPPLIERID = :2
                           and (RPL.CATALOGID like '015%' or
                               RPL.CATALOGID like '15%')
                           and RPL.STATDATE = TO_DATE(:3, 'YYYY-MM-DD')
                         GROUP BY (RPL.CATALOGID, RPL.ITEMCODE, RPL.PRODUCTID)) TEMP
                  LEFT JOIN tabname3 RPO
                    ON TEMP.ITEMCODE = RPO.ITEMCODE
                   and RPO.STATDATE = TO_DATE(:4, 'YYYY-MM-DD')
                 ORDER BY LSUM DESC, TEMP.ITEMCODE) TMPA
         WHERE ROWNUM  WHERE TMPB.rownum_ > :6
 

SELECT TCC.DESCRIPTION
  FROM tabname1 RPL, tabname2 TCC
 WHERE RPL.COUNTRY = TCC.COUNTRYID
   AND RPL.L3COLUMN = :1
   and RPL.SUPPLIERID = :2
   and RPL.ITEMCODE = :3
   and RPL.STATDATE = TO_DATE(:4, 'YYYY-MM-DD')
   and ROWNUM  ORDER BY RPL.LISTNUM DESC

通过以上sql可以看到,都是对数据某一天的统计,这些sql也是主要影响db磁盘的io的,所以建议调整tabname1的分区格式,采用rang-list组合分区;只创建分区索引,不创建全局索引。以STATDATE列创建rang分区,以L3COLUMN创建list分区

目前load数据逻辑:
1. 每天先truancate表tmp_tabname1,
2. 然后gp集群把这一天的所有数据都load到tmp_tabname1,
3. 然后再把tmp_tabname1 直接insert到表tabname1;速度主要慢在insert的过程。(可以按L3COLUMN把数据分配load到tmp_tabname1)

调整后load数据逻辑:
1. 每天先truancate表tmp_tabname1,
2. 然后gp集群把这一天的每个list(L3COLUMN)数据分别load到tmp_tabname1,也就是说gp集群把原来一次load变为1000次,或者tmp_tabname1的分区和tabname1一样,,这样gp集群也是一次load
3. 利用oracle的表交换技术(eg:alter table t_temp exchange subpartition p9sublist1 with table t_temp1 update indexes)来提高数据load到tabname1的速度

我测试用表交换技术和insert的load数据对比

数据量:300m,1700万记录的测试数据

用表交换(有全局索引的),速度比insert快2倍左右
用表交换(没有有全局索引的),速度比insert快4-6倍左右

这样做的好处,因为db的io瓶颈很严重,io的utile%几乎很少低于95%的
1. 提高查询速度,sql根据STATDATE找到rang主分区,然后再根据L3COLUMN找到list分区,这样就减少了数据扫描的数据量
2. 加快了load的速度
3. 便于维护

缺点:
1.gp集群到tmp_tabname1的load速度有影响

可以根据自己业务需求来选择合适实现方式,选择适合自己的就是最好的!!!

------end------

linux

Kenyataan
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
Bagaimanakah kardinaliti indeks MySQL mempengaruhi prestasi pertanyaan?Bagaimanakah kardinaliti indeks MySQL mempengaruhi prestasi pertanyaan?Apr 14, 2025 am 12:18 AM

Cardinality Indeks MySQL mempunyai kesan yang signifikan terhadap prestasi pertanyaan: 1. Indeks kardinaliti yang tinggi dapat lebih berkesan menyempitkan julat data dan meningkatkan kecekapan pertanyaan; 2. Indeks kardinaliti yang rendah boleh membawa kepada pengimbasan jadual penuh dan mengurangkan prestasi pertanyaan; 3. Dalam indeks bersama, urutan kardinaliti yang tinggi harus diletakkan di depan untuk mengoptimumkan pertanyaan.

MySQL: Sumber dan Tutorial untuk Pengguna BaruMySQL: Sumber dan Tutorial untuk Pengguna BaruApr 14, 2025 am 12:16 AM

Laluan pembelajaran MySQL termasuk pengetahuan asas, konsep teras, contoh penggunaan, dan teknik pengoptimuman. 1) Memahami konsep asas seperti jadual, baris, lajur, dan pertanyaan SQL. 2) Ketahui definisi, prinsip kerja dan kelebihan MySQL. 3) menguasai operasi CRUD asas dan penggunaan lanjutan, seperti indeks dan prosedur yang disimpan. 4) Biasa dengan debugging kesilapan biasa dan cadangan pengoptimuman prestasi, seperti penggunaan rasional indeks dan pertanyaan pengoptimuman. Melalui langkah -langkah ini, anda akan memahami sepenuhnya penggunaan dan pengoptimuman MySQL.

Mysql dunia nyata: Contoh dan kes penggunaanMysql dunia nyata: Contoh dan kes penggunaanApr 14, 2025 am 12:15 AM

Aplikasi dunia nyata MySQL termasuk reka bentuk pangkalan data asas dan pengoptimuman pertanyaan kompleks. 1) Penggunaan Asas: Digunakan untuk menyimpan dan mengurus data pengguna, seperti memasukkan, menanyakan, mengemas kini dan memadam maklumat pengguna. 2) Penggunaan lanjutan: Mengendalikan logik perniagaan yang kompleks, seperti perintah dan pengurusan inventori platform e-dagang. 3) Pengoptimuman Prestasi: Meningkatkan prestasi dengan menggunakan indeks, jadual partisi dan cache pertanyaan.

Perintah SQL di MySQL: Contoh PraktikalPerintah SQL di MySQL: Contoh PraktikalApr 14, 2025 am 12:09 AM

Perintah SQL di MySQL boleh dibahagikan kepada kategori seperti DDL, DML, DQL, dan DCL, dan digunakan untuk membuat, mengubah suai, memadam pangkalan data dan jadual, memasukkan, mengemas kini, memadam data, dan melakukan operasi pertanyaan yang kompleks. 1. Penggunaan asas termasuk jadual penciptaan createtable, memasukkan data memasukkan, dan pilih data pertanyaan. 2. Penggunaan lanjutan melibatkan gabungan untuk Jadual Bergabung, Subqueries dan Groupby untuk Agregasi Data. 3. Kesilapan umum seperti kesilapan sintaks, jenis data yang tidak sepadan dan masalah kebenaran boleh disahpepijat melalui pemeriksaan sintaks, penukaran jenis data dan pengurusan kebenaran. 4. Cadangan Pengoptimuman Prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi gabungan dan menggunakan transaksi untuk memastikan konsistensi data.

Bagaimanakah InnoDB mengendalikan pematuhan asid?Bagaimanakah InnoDB mengendalikan pematuhan asid?Apr 14, 2025 am 12:03 AM

InnoDB mencapai atomik melalui undolog, konsistensi dan pengasingan melalui mekanisme penguncian dan MVCC, dan kegigihan melalui redolog. 1) Atomicity: Gunakan Undolog untuk merekodkan data asal untuk memastikan urus niaga dapat dilancarkan kembali. 2) Konsistensi: Memastikan konsistensi data melalui penguncian peringkat baris dan MVCC. 3) Pengasingan: Menyokong pelbagai tahap pengasingan, dan RepeatableRead digunakan secara lalai. 4) Kegigihan: Gunakan redolog untuk merekodkan pengubahsuaian untuk memastikan data disimpan untuk masa yang lama.

Tempat Mysql: Pangkalan Data dan PengaturcaraanTempat Mysql: Pangkalan Data dan PengaturcaraanApr 13, 2025 am 12:18 AM

Kedudukan MySQL dalam pangkalan data dan pengaturcaraan sangat penting. Ia adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pelbagai senario aplikasi. 1) MySQL menyediakan fungsi penyimpanan data, organisasi dan pengambilan data yang cekap, sistem sokongan web, mudah alih dan perusahaan. 2) Ia menggunakan seni bina pelanggan-pelayan, menyokong pelbagai enjin penyimpanan dan pengoptimuman indeks. 3) Penggunaan asas termasuk membuat jadual dan memasukkan data, dan penggunaan lanjutan melibatkan pelbagai meja dan pertanyaan kompleks. 4) Soalan -soalan yang sering ditanya seperti kesilapan sintaks SQL dan isu -isu prestasi boleh disahpepijat melalui arahan jelas dan log pertanyaan perlahan. 5) Kaedah pengoptimuman prestasi termasuk penggunaan indeks rasional, pertanyaan yang dioptimumkan dan penggunaan cache. Amalan terbaik termasuk menggunakan urus niaga dan preparedStatemen

Mysql: Dari perniagaan kecil ke perusahaan besarMysql: Dari perniagaan kecil ke perusahaan besarApr 13, 2025 am 12:17 AM

MySQL sesuai untuk perusahaan kecil dan besar. 1) Perniagaan kecil boleh menggunakan MySQL untuk pengurusan data asas, seperti menyimpan maklumat pelanggan. 2) Perusahaan besar boleh menggunakan MySQL untuk memproses data besar dan logik perniagaan yang kompleks untuk mengoptimumkan prestasi pertanyaan dan pemprosesan transaksi.

Apa yang dibaca oleh Phantom dan bagaimana InnoDB menghalang mereka (kunci seterusnya)?Apa yang dibaca oleh Phantom dan bagaimana InnoDB menghalang mereka (kunci seterusnya)?Apr 13, 2025 am 12:16 AM

InnoDB secara berkesan menghalang pembacaan hantu melalui mekanisme utama. 1) Kekunci seterusnya menggabungkan kunci baris dan kunci jurang untuk mengunci rekod dan jurang mereka untuk mengelakkan rekod baru daripada dimasukkan. 2) Dalam aplikasi praktikal, dengan mengoptimumkan pertanyaan dan menyesuaikan tahap pengasingan, persaingan kunci dapat dikurangkan dan prestasi konkurensi dapat ditingkatkan.

See all articles

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)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)