Menggunakan pencatatan kueri lambat Amazon Neptunus - Amazon Neptune

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan pencatatan kueri lambat Amazon Neptunus

Mengidentifikasi, men-debug, dan mengoptimalkan kueri yang berjalan lambat bisa jadi sulit. Saat pencatatan kueri lambat Neptunus diaktifkan, atribut dari semua kueri yang berjalan lama secara otomatis dicatat untuk mempermudah proses ini.

Anda mengaktifkan pencatatan kueri lambat menggunakan parameter cluster DB neptune_enable_slow_query_log DB. Secara default, parameter ini diatur kedisabled. Mengaturnya ke info atau debug mengaktifkan pencatatan kueri lambat. infoPengaturan mencatat beberapa atribut berguna dari setiap kueri yang berjalan lambat, sedangkan debug pengaturan mencatat semua atribut yang tersedia.

Untuk mengatur ambang batas untuk apa yang dianggap sebagai kueri yang berjalan lambat, gunakan parameter cluster DB neptune_slow_query_log_threshold untuk menentukan jumlah milidetik setelah itu kueri yang berjalan dianggap lambat dan dicatat saat logging kueri lambat diaktifkan. Nilai default adalah 5000 milidetik (5 detik).

Anda dapat mengatur parameter cluster DB ini di AWS Management Console, atau menggunakan AWS CLI perintah modify-db-cluster-parameter-group, atau fungsi manajemen ClusterParameterGroupModifyDB.

catatan

Parameter pencatatan kueri lambat bersifat dinamis, artinya mengubah nilainya tidak memerlukan atau menyebabkan restart cluster DB Anda.

Untuk melihat log kueri lambat di AWS Management Console

Anda dapat melihat dan mengunduh log kueri lambat di AWS Management Console, sebagai berikut:

Pada halaman Instances, pilih instans DB dan kemudian gulir ke bagian Log. Anda kemudian dapat memilih file log di sana dan kemudian memilih Unduh untuk mengunduhnya.

File yang dihasilkan oleh pencatatan kueri lambat Neptunus

File log yang dihasilkan oleh pencatatan kueri lambat di Neptunus memiliki karakteristik sebagai berikut:

  • File dikodekan sebagai UTF-8.

  • Kueri dan atributnya dicatat dalam bentuk JSON.

  • Atribut nol dan kosong tidak dicatat, kecuali untuk queryTime data.

  • Log mencakup beberapa file, yang jumlahnya bervariasi dengan ukuran instance.

  • Entri log tidak berurutan. Anda dapat menggunakan timestamp nilainya untuk memesannya.

  • Untuk melihat peristiwa terbaru, Anda mungkin harus meninjau semua file log kueri lambat.

  • File log diputar saat mencapai 100 MiB secara agregat. Pembatasan ini tidak dapat dikonfigurasi.

Atribut kueri masuk info mode

Atribut berikut dicatat untuk kueri lambat ketika parameter cluster neptune_enable_slow_query_log DB telah disetel keinfo:

Grup Atribut Deskripsi

requestResponseMetadata

requestId

Permintaan id kueri.

requestType

Jenis permintaan, seperti HTTP atau WebSocket.

responseStatusCode

Kode status respons kueri, seperti 200.

exceptionClass

Kelas pengecualian kesalahan dikembalikan setelah eksekusi kueri.

QueryStats

query

String kueri.

queryFingerprint

Sidik jari dari kueri.

queryLanguage

Bahasa kueri, seperti Gremlin, SPARQL atau OpenCypher.

MemoryStats

allocatedPermits

Izin dialokasikan untuk kueri.

approximateUsedMemoryBytes

Perkiraan memori yang digunakan oleh kueri selama eksekusi.

QueryTime

startTime

Waktu mulai kueri (UTC).

overallRunTimeMs

Kueri total waktu berjalan, dalam milidetik.

parsingTimeMs

Waktu penguraian kueri, dalam milidetik.

waitingTimeMs

Query Gremlin/Sparql/OpenCypher antrian waktu tunggu, dalam milidetik

executionTimeMs

Waktu eksekusi kueri, dalam milidetik.

serializationTimeMs

Waktu serialisasi kueri, dalam milidetik.

Penghitung Pernyataan

scanned

Jumlah pernyataan yang dipindai.

written

Jumlah pernyataan yang ditulis.

deleted

Jumlah pernyataan yang dihapus.

Penghitung Transaksi

committed

Jumlah transaksi yang dilakukan.

rolledBack

Jumlah transaksi digulirkan kembali.

VerteXCounters

added

Jumlah simpul ditambahkan.

removed

Jumlah simpul dihapus.

propertiesAdded

Jumlah properti simpul ditambahkan.

propertiesRemoved

Jumlah properti simpul dihapus.

EdgeCounters

added

Jumlah tepi ditambahkan.

removed

Jumlah tepi dihapus.

propertiesAdded

Jumlah properti tepi ditambahkan.

propertiesRemoved

Jumlah properti tepi dihapus.

ResultCache

hitCount

Hasil cache hit count.

missCount

Hasil cache melewatkan hitungan.

putCount

Hasil cache menempatkan hitungan.

Eksekusi Concurrent

acceptedQueryCountAtStart

Kueri paralel diterima dengan eksekusi kueri saat ini di awal.

runningQueryCountAtStart

Kueri paralel berjalan dengan eksekusi kueri saat ini di awal.

acceptedQueryCountAtEnd

Kueri paralel diterima dengan eksekusi kueri saat ini di akhir.

runningQueryCountAtEnd

Kueri paralel berjalan dengan eksekusi kueri saat ini di akhir.

QueryBatch

queryProcessingBatchSize

Ukuran batch selama pemrosesan kueri.

querySerialisationBatchSize

Ukuran batch selama serialisasi kueri.

Atribut kueri masuk debug mode

Ketika parameter cluster neptune_enable_slow_query_log DB telah disetel kedebug, atribut penghitung penyimpanan berikut dicatat selain atribut yang dicatat seperti dalam info mode:

Atribut Deskripsi

statementsScannedInAllIndexes

Pernyataan dipindai di semua indeks.

statementsScannedSPOGIndex

Pernyataan dipindai dalam indeks SPOG.

statementsScannedPOGSIndex

Pernyataan dipindai dalam indeks POGS.

statementsScannedGPSOIndex

Pernyataan dipindai dalam indeks GPSO.

statementsScannedOSGPIndex

Pernyataan dipindai dalam indeks OSGP.

statementsScannedInChunk

Pernyataan dipindai bersama dalam potongan.

postFilteredStatementScans

Pernyataan yang tersisa setelah pemfilteran posting setelah pemindaian.

distinctStatementScans

Pernyataan berbeda dipindai.

statementsReadInAllIndexes

Pernyataan dibaca setelah pemindaian pemfilteran posting di semua indeks.

statementsReadSPOGIndex

Pernyataan dibaca setelah pemindaian posting pemfilteran dalam indeks SPOG.

statementsReadPOGSIndex

Pernyataan dibaca setelah pemindaian pemfilteran posting dalam indeks POGS.

statementsReadGPSOIndex

Pernyataan dibaca setelah pemindaian posting pemfilteran dalam indeks GPSO.

statementsReadOSGPIndex

Pernyataan dibaca setelah pemindaian posting pemfilteran dalam indeks OSGP.

accessPathSearches

Jumlah pencarian jalur akses.

fullyBoundedAccessPathSearches

Jumlah pencarian jalur akses kunci yang sepenuhnya dibatasi.

accessPathSearchedByPrefix

Jumlah jalur akses yang dicari dengan awalan.

searchesWhereRecordsWereFound

Jumlah pencarian yang memiliki 1 atau lebih catatan sebagai output.

searchesWhereRecordsWereNotFound

Jumlah pencarian yang tidak memiliki catatan sebagai output.

totalRecordsFoundInSearches

Total catatan yang ditemukan dari semua pencarian.

statementsInsertedInAllIndexes

Jumlah pernyataan yang dimasukkan dalam semua indeks.

statementsUpdatedInAllIndexes

Jumlah pernyataan yang diperbarui di semua indeks.

statementsDeletedInAllIndexes

Jumlah pernyataan yang dihapus di semua indeks.

predicateCount

Jumlah predikat.

dictionaryReadsFromValueToIdTable

Jumlah kamus yang dibaca dari nilai ke tabel ID.

dictionaryReadsFromIdToValueTable

Jumlah kamus yang dibaca dari ID tabel nilai.

dictionaryWritesToValueToIdTable

Jumlah kamus menulis ke nilai ke tabel ID.

dictionaryWritesToIdToValueTable

Jumlah kamus menulis ke ID ke tabel nilai.

rangeCountsInAllIndexes

Jumlah jumlah rentang di semua indeks.

deadlockCount

Jumlah kebuntuan dalam kueri.

singleCardinalityInserts

Jumlah sisipan kardinansi tunggal dilakukan.

singleCardinalityInsertDeletions

Jumlah pernyataan yang dihapus selama penyisipan kardinalitas tunggal.

Contoh logging debug untuk kueri lambat

Kueri Gremlin berikut bisa memakan waktu lebih lama untuk dijalankan daripada ambang batas yang ditetapkan untuk kueri lambat:

gremlin=g.V().has('code','AUS').repeat(out().simplePath()).until(has('code','AGR')).path().by('code').limit(20).fold()

Kemudian, jika pencatatan kueri lambat diaktifkan dalam mode debug, atribut berikut akan dicatat untuk kueri, dalam bentuk seperti ini:

{ "requestResponseMetadata": { "requestId": "5311e493-0e98-457e-9131-d250a2ce1e12", "requestType": "HTTP_GET", "responseStatusCode": 200 }, "queryStats": { "query": "gremlin=g.V().has('code','AUS').repeat(out().simplePath()).until(has('code','AGR')).path().by('code').limit(20).fold()", "queryFingerprint": "g.V().has(string0,string1).repeat(__.out().simplePath()).until(__.has(string0,string2)).path().by(string0).limit(long0).fold()", "queryLanguage": "Gremlin" }, "memoryStats": { "allocatedPermits": 20, "approximateUsedMemoryBytes": 14838 }, "queryTimeStats": { "startTime": "23/02/2023 11:42:52.657", "overallRunTimeMs": 2249, "executionTimeMs": 2229, "serializationTimeMs": 13 }, "statementCounters": { "read": 69979 }, "transactionCounters": { "committed": 1 }, "concurrentExecutionStats": { "acceptedQueryCountAtStart": 1 }, "queryBatchStats": { "queryProcessingBatchSize": 1000, "querySerialisationBatchSize": 1000 }, "storageCounters": { "statementsScannedInAllIndexes": 69979, "statementsScannedSPOGIndex": 44936, "statementsScannedPOGSIndex": 4, "statementsScannedGPSOIndex": 25039, "statementsReadInAllIndexes": 68566, "statementsReadSPOGIndex": 43544, "statementsReadPOGSIndex": 2, "statementsReadGPSOIndex": 25020, "accessPathSearches": 27, "fullyBoundedAccessPathSearches": 27, "dictionaryReadsFromValueToIdTable": 10, "dictionaryReadsFromIdToValueTable": 17, "rangeCountsInAllIndexes": 4 } }