国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

elasticsearch的查詢方式和mysql數(shù)據(jù)庫事務(wù)隔離級別的思考

這篇具有很好參考價(jià)值的文章主要介紹了elasticsearch的查詢方式和mysql數(shù)據(jù)庫事務(wù)隔離級別的思考。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

普通分頁

解除查詢限制

scroll查詢

search_after

官方改進(jìn)

輕量級試圖(pit,Point in time)

總結(jié)


項(xiàng)目中用到了?elasticsearch,發(fā)現(xiàn)有幾種查詢方式不太一樣,思考了一下,總結(jié)如下

普通分頁

等同于關(guān)系數(shù)據(jù)庫的分頁查詢,例如 mysql 的 limit,如下 sql

select * from test limit 100000,10

這種查詢方式有一個(gè)問題,需要查詢?1000010 條數(shù)據(jù)到內(nèi)存中,然后篩選出最后的 10 條數(shù)據(jù)進(jìn)行返回,這樣就會造成一個(gè)問題,對內(nèi)存大大浪費(fèi)。

對于?elasticsearch 也是這樣,所以針對分頁數(shù)量大于 10000 的數(shù)據(jù)做了限制,需要手動(dòng)開啟參數(shù)?track_total_hits 為 true 才行,如果這樣做了會產(chǎn)生一個(gè)問題,就是大量數(shù)據(jù)加載 jvm 中(elasticsearch使用java開發(fā),使用的lucene也是),內(nèi)存吃緊開銷大,造成頻繁的 gc。

解除查詢限制

PUT _all/_settings
{
  "index" : {"max_result_window" : 1000000}
}

這種方式是治標(biāo)不治本,不建議修改

需要確保如下要求

from + size < max_result_window

為了解決這個(gè)深分頁的問題,滾動(dòng)查詢出現(xiàn)了

scroll查詢

https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-request-scroll.html

從 5.0 版本開始添加。

scroll API 可用于從單個(gè)搜索請求檢索大量結(jié)果(甚至所有結(jié)果),這與在傳統(tǒng)數(shù)據(jù)庫上使用游標(biāo)的方式大致相同。
scroll?并不是為了實(shí)時(shí)用戶請求,而是為了處理大量數(shù)據(jù),只能往下查詢。

通過第一次查詢后返回一個(gè)scroll?id,往后每次查詢都基于這個(gè)scroll id,直到查詢不到數(shù)據(jù)為止。

開始查詢時(shí)形成一個(gè)快照,連續(xù)查詢過程中,不會將新增加或修改的數(shù)據(jù)添加到查詢結(jié)果中,也不支持跳頁查詢。

初始化時(shí)將所有符合搜索條件的搜索結(jié)果緩存起來,可以想象成快照,在遍歷時(shí),從這個(gè)快照里取數(shù)據(jù),也就是說,在初始化后對索引插入、刪除、更新數(shù)據(jù)都不會影響遍歷結(jié)果。

如果想要在查詢過程中某些數(shù)據(jù)修改了,需要查詢到最新的數(shù)據(jù)。需要使用?search_after 來實(shí)現(xiàn)。

類似于mysql事務(wù)隔離級別中的?REPEATABLE READ,每個(gè)事務(wù)只會在第一次執(zhí)行查詢語句時(shí)生成一個(gè) ReadView,即數(shù)據(jù)修改了不影響本次查詢的結(jié)果。

search_after

https://www.elastic.co/guide/en/elasticsearch/reference/5.0/search-request-search-after.html

和 scroll 查詢一樣,從 5.0 版本開始添加。使用的場景不同。

search_after不是自由跳轉(zhuǎn)到隨機(jī)頁面的解決方案,而是并行滾動(dòng)許多查詢的解決方案。

它與 API 非常相似,與 scroll 不同的是,search_after參數(shù)是無狀態(tài)的,它總是根據(jù)搜索器的最新版本進(jìn)行解析。因此,排序順序可能會在步行過程中發(fā)生變化,具體取決于索引的更新和刪除。

在查詢過程中至少指定一個(gè)唯一不重復(fù)字段來排序。

類似于mysql事務(wù)隔離級別中的?READ COMMITTED,每個(gè)事務(wù)在每次查詢開始時(shí)都會生成一個(gè)獨(dú)立的 ReadView,即數(shù)據(jù)修改了每次執(zhí)行查詢了數(shù)據(jù)都是不同的。

官方改進(jìn)

輕量級試圖(pit,Point in time)

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/point-in-time-api.html

從 7.10 版本中開始添加。

https://www.elastic.co/guide/en/elasticsearch/reference/7.10/scroll-api.html

在這個(gè)文檔上,指出了不推薦使用 scroll 查詢,使用?search_after 和 pit 來代替。即針對快照數(shù)據(jù)建議使用這種方式。

elasticsearch的查詢方式和mysql數(shù)據(jù)庫事務(wù)隔離級別的思考,elasticsearch,mysql,事務(wù),elasticsearch,mysql,大數(shù)據(jù),搜索引擎,jvm,java

對于search_after 和 pit 結(jié)合使用與?scroll 的到底有什么區(qū)別,官方文檔也沒做說明,也沒找到對應(yīng)的性能對比測試。

總結(jié)

查詢方式 數(shù)據(jù)量 實(shí)時(shí)查詢 排序 跳頁 使用場景 與mysql數(shù)據(jù)庫事務(wù)隔離級別對應(yīng)關(guān)系
from+size淺分頁 <=10000 支持 支持 支持 實(shí)時(shí)跳頁查詢,搜索引擎 READ COMMITTED
scroll >10000 不支持 支持 不支持 深分頁,無序批量查詢.。
后臺批處理、導(dǎo)出
REPEATABLE READ
search_after >10000 支持 支持 不支持 深分頁,實(shí)時(shí)大批量查詢 READ COMMITTED

參考鏈接

https://blog.csdn.net/liaomingwu/article/details/117323936

https://blog.csdn.net/weixin_46097842/article/details/107889284

https://cloud.tencent.com/developer/article/1825190

https://juejin.cn/post/7088110134076899365

https://blog.csdn.net/UbuntuTouch/article/details/119926953

?文章來源地址http://www.zghlxwxcb.cn/news/detail-801126.html

到了這里,關(guān)于elasticsearch的查詢方式和mysql數(shù)據(jù)庫事務(wù)隔離級別的思考的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • mysql數(shù)據(jù)庫之事務(wù)

    mysql數(shù)據(jù)庫之事務(wù)

    總的來說,事務(wù) 就是一種機(jī)制,包含了一組操作命令,會作為一個(gè)不可分割的整體,要么都執(zhí)行,要么都不執(zhí)行 ,它保證了數(shù)據(jù)庫的安全可靠性 是一種機(jī)制、一個(gè)操作序列,包含了一組數(shù)據(jù)庫操作命令,并且把所有的命令作為一個(gè)整體一起向系統(tǒng)提交或撤銷操作請求,即這

    2024年02月09日
    瀏覽(21)
  • Sql Server 數(shù)據(jù)庫事務(wù)與鎖,同一事務(wù)更新又查詢鎖的變化,期望大家來解惑!

    Sql Server 數(shù)據(jù)庫事務(wù)與鎖,同一事務(wù)更新又查詢鎖的變化,期望大家來解惑!

    我有一個(gè)People表,有三行數(shù)據(jù): 如果我們沒詳細(xì)了解數(shù)據(jù)庫事務(wù)執(zhí)行加鎖的過程中,會不會有這樣一個(gè)疑問:如下的這段 SQL 開啟了事務(wù),并且在事務(wù)中進(jìn)行了更新和查詢操作。 我們知道sql server數(shù)據(jù)庫的默認(rèn)事務(wù)級別是READ COMMITTED(已提交的讀?。?,我們再看一下已提交讀事

    2024年02月01日
    瀏覽(66)
  • 簡單認(rèn)識MySQL數(shù)據(jù)庫事務(wù)

    簡單認(rèn)識MySQL數(shù)據(jù)庫事務(wù)

    MySQL 事務(wù)主要用于處理操作量大,復(fù)雜度高的數(shù)據(jù)。比如說,在戰(zhàn)艦登錄系統(tǒng)中, 要?jiǎng)h除一艘戰(zhàn)艦,即需要?jiǎng)h除戰(zhàn)艦的基本資料,又需要?jiǎng)h除和該戰(zhàn)艦相關(guān)的信息,如艦長, 登記船員等等。這樣,這些數(shù)據(jù)庫操作語句就構(gòu)成一個(gè)事務(wù)! ●事務(wù)是一種機(jī)制、一個(gè)操作序列,包

    2024年02月16日
    瀏覽(24)
  • 【Mysql數(shù)據(jù)庫 第13章】MySQL的事務(wù)、事務(wù)的隔離級別、事務(wù)的保存點(diǎn)

    ??Spring中的創(chuàng)建對象的三種方式、第三方資源配置管理詳細(xì)描述及使用(XML版完結(jié)篇) ??Spring中的bean的配置、作用范圍、生命周期詳細(xì)描述及使用(XML版上篇) ??

    2023年04月20日
    瀏覽(21)
  • 【MySQL數(shù)據(jù)庫 | 第十五篇】事務(wù)

    【MySQL數(shù)據(jù)庫 | 第十五篇】事務(wù)

    ? ? 目錄 ? ?前言: ?介紹事務(wù): ?控制事務(wù): ?事務(wù)四大特性: ?并發(fā)事務(wù)問題: ?事務(wù)隔離級別: 總結(jié): ? 這章我們將進(jìn)入到MySQL基礎(chǔ)篇的最后一章:事務(wù),希望大家可以堅(jiān)持下去,跟著我一起走完MySQL的學(xué)習(xí)之旅。 MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),支持事務(wù)管理。 事

    2024年02月08日
    瀏覽(23)
  • 【Spring/MySQL數(shù)據(jù)庫系列】數(shù)據(jù)庫事務(wù)的特點(diǎn)與隔離級別

    【Spring/MySQL數(shù)據(jù)庫系列】數(shù)據(jù)庫事務(wù)的特點(diǎn)與隔離級別

    ?? 前面的話 ?? 本文已經(jīng)收錄到《Spring框架全家桶系列》專欄,本文將介紹有關(guān)數(shù)據(jù)庫事務(wù)的特點(diǎn)以及隔離級別。 ??博客主頁:未見花聞的博客主頁 ??歡迎關(guān)注??點(diǎn)贊??收藏??留言?? ??本文由 未見花聞 原創(chuàng), CSDN 首發(fā)! ??首發(fā)時(shí)間:??2023年5月20日?? ??堅(jiān)

    2024年02月05日
    瀏覽(25)
  • Spring Boot中操作數(shù)據(jù)庫的幾種并發(fā)事務(wù)方式

    當(dāng)有多個(gè) 并發(fā) 事務(wù)時(shí),會發(fā)生丟失更新異常。來自一個(gè)或多個(gè) 事務(wù) 的更新可能會丟失,因?yàn)槠渌聞?wù)會用其結(jié)果覆蓋它。 讓我們通過一個(gè)例子來檢驗(yàn)一下??紤]以下執(zhí)行事務(wù)的方法。 public void withdraw(Long accountId, double amount) { Account account = accountRepository.findById(accountId).orEl

    2024年01月22日
    瀏覽(42)
  • Go 語言實(shí)現(xiàn) MySQL 數(shù)據(jù)庫事務(wù)

    MySQL事務(wù)是指一組數(shù)據(jù)庫操作,它們被視為一個(gè)邏輯單元,并且要么全部成功執(zhí)行,要么全部回滾(撤銷)。事務(wù)是數(shù)據(jù)庫管理系統(tǒng)提供的一種機(jī)制,用于確保數(shù)據(jù)的一致性和完整性。 事務(wù)具有以下特性(通常由ACID原則定義): 原子性(Atomicity):事務(wù)中的所有操作要么全

    2024年02月08日
    瀏覽(21)
  • C# 從代碼入門 Mysql 數(shù)據(jù)庫事務(wù)

    C# 從代碼入門 Mysql 數(shù)據(jù)庫事務(wù)

    在業(yè)務(wù)開發(fā)中,使用數(shù)據(jù)庫事務(wù)是必不可少的。而開發(fā)中往往會使用各種 ORM 執(zhí)行數(shù)據(jù)庫操作,簡化代碼復(fù)雜度,不過,由于各種 ORM 的封裝特性,開發(fā)者的使用方式也不一樣,開發(fā)者想要了解 ORM 對事務(wù)做了什么處理是比較難的。因此,本文介紹數(shù)據(jù)庫事務(wù)基礎(chǔ)、Ado.net 事務(wù)

    2024年02月04日
    瀏覽(20)
  • 初識mysql數(shù)據(jù)庫之事務(wù)的概念及操作

    初識mysql數(shù)據(jù)庫之事務(wù)的概念及操作

    目錄 一、數(shù)據(jù)庫多客戶端訪問問題 1. 數(shù)據(jù)庫的CURD無限制帶來的問題 2. 如何解決CURD導(dǎo)致的問題 二、事務(wù)的概念 1. 什么是事務(wù) 2. 事務(wù)的四個(gè)屬性 3. mysql對事務(wù)的管理 4. 為什么會有事務(wù) 5. 事務(wù)的版本支持 三、事務(wù)的操作 1. 事務(wù)提交方式 2. 事務(wù)操作的準(zhǔn)備工作 2.1 數(shù)據(jù)庫是網(wǎng)

    2024年02月15日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包