Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Cache rencana kueri di Amazon Neptunus
Ketika kueri dikirimkan ke Neptunus, string kueri diurai, dioptimalkan, dan diubah menjadi rencana kueri, yang kemudian dieksekusi oleh mesin. Aplikasi sering didukung oleh pola kueri umum yang dibuat dengan nilai yang berbeda. Cache rencana kueri dapat mengurangi latensi keseluruhan dengan men-cache rencana kueri dan dengan demikian menghindari penguraian dan pengoptimalan untuk pola berulang tersebut.
Query Plan Cache dapat digunakan untuk OpenCypher kueri — kueri non-parameter atau parameter. Ini diaktifkan untuk BACA, dan untuk HTTP dan Bolt. Itu tidak didukung untuk kueri mutasi OC. Ini tidak didukung untuk kueri Gremlin atau SPARQL.
Cara memaksa mengaktifkan atau menonaktifkan cache rencana kueri
Cache paket kueri diaktifkan secara default untuk kueri berparameter latensi rendah. Rencana untuk kueri berparameter di-cache hanya ketika latensi lebih rendah dari ambang 100ms. Perilaku ini dapat diganti berdasarkan per-kueri (diparameter atau tidak) oleh Petunjuk Kueri tingkat kueri. QUERY:PLANCACHE Itu perlu digunakan dengan USING klausa. Petunjuk kueri menerima enabled atau disabled sebagai nilai.
Cara menentukan apakah rencana di-cache atau tidak
Untuk HTTP READ, jika kueri dikirimkan dan rencana di-cache, explain akan menampilkan detail yang relevan dengan cache rencana kueri.
Jika rencana di-cache, explain output menunjukkan:
Query: <QUERY STRING> Plan cached by request: <REQUEST ID OF FIRST TIME EXECUTION> Plan cached at: <TIMESTAMP OF FIRST TIME EXECUTION> Parameters: <PARAMETERS, IF QUERY IS PARAMETERIZED QUERY> Plan cache hits: <NUMBER OF CACHE HITS FOR CACHED PLAN> First query evaluation time: <LATENCY OF FIRST TIME EXECUTION> The query has been executed based on a cached query plan. Detailed explain with operator runtime statistics can be obtained by running the query with plan cache disabled (using HTTP parameter planCache=disabled).
Saat menggunakan Bolt, fitur penjelasan tidak didukung.
Pengusiran
Rencana kueri diusir oleh waktu cache untuk hidup (TTL) atau ketika jumlah maksimum rencana kueri yang di-cache telah tercapai. Saat paket kueri tertekan, TTL diperbarui. Defaultnya adalah:
-
1000 - Jumlah maksimum paket yang dapat di-cache per instance.
-
TTL - 300.000 milidetik atau 5 menit. Tekan cache memulai ulang TTL, dan mengatur ulang kembali ke 5 menit.
Kondisi yang menyebabkan rencana tidak di-cache
Cache paket kueri tidak akan digunakan dalam kondisi berikut:
-
Ketika kueri dikirimkan menggunakan petunjuk kueri
QUERY:PLANCACHE "disabled". Anda dapat menjalankan kembali kueri dan menghapusQUERY:PLANCACHE "disabled"untuk mengaktifkan cache rencana kueri. -
Jika kueri yang dikirimkan bukan kueri berparameter dan tidak mengandung petunjuk
QUERY:PLANCACHE "enabled". -
Jika waktu evaluasi kueri lebih besar dari ambang latensi, kueri tidak di-cache dan dianggap sebagai kueri yang berjalan lama yang tidak akan mendapat manfaat dari cache rencana kueri.
-
Jika kueri berisi pola yang tidak mengembalikan hasil apa pun.
-
yaitu
MATCH (n:nonexistentLabel) return nketika ada nol node dengan label yang ditentukan. -
yaitu
MATCH (n {name: $param}) return ndenganparameters={"param": "abcde"}ketika ada nol node yang mengandungname=abcde.
-
-
Jika parameter kueri adalah tipe komposit, seperti a
listatau amap.curl https://your-neptune-endpoint:port/openCypher \ -d "query=Using QUERY:PLANCACHE \"enabled\" RETURN \$arg" \ -d "parameters={\"arg\": [1, 2, 3]}" curl https://your-neptune-endpoint:port/openCypher \ -d "query=Using QUERY:PLANCACHE \"enabled\" RETURN \$arg" \ -d "parameters={\"arg\": {\"a\": 1}}" -
Jika parameter query adalah string yang belum menjadi bagian dari operasi pemuatan data atau penyisipan data. Misalnya, jika
CREATE (n {name: "X"})dijalankan untuk menyisipkan"X",RETURN "X"maka di-cache, sementara tidakRETURN "Y"akan di-cache,"Y"karena belum dimasukkan dan tidak ada dalam database.