?? ?? ???? ?? ? ???? ???? ?? MySQL + ES + MongoDB? ???? ??? ??????
Jul 27, 2020 pm 05:24 PM??? ?? ? ?? ??
??? ??: ??? ?? ?? ? ??? ? ???? ??? ? ????
??? ? ?? ??? ??? ? ?? ?? ??? ??? ???. ???? ??? ????? ??????? ???? ??? ???? ???? ?? ?? ????, ??? ?? ?? ?????. ???? ?? ?? ??? ??? ??? ???? ? ???? ??? ????? ????.
?? ??? ?? ???? ????? ??? ????? ? ?????.
????? ??
?? ??? ?? ? ?? ? ???? ??? ? ??? ? ?? ??? ??? ????? ????? ??? ????.
?? ??:
???, 142360???? ???? ???? ??????
MySQL? ????? MongoDB ??????? ?????. ? ???? ??? ?? ??, ???? ????, ES? ????? ??? ????. ?? ??? ??? ??? ??? ????. ??? ???? ???? ??? ??? ????? ?? ??? ? ????.
??? ?? ??? ??? ???? ?? ??
???? ???? ? ??? ?? ??? ??? ??? ? ???, ? ???? ???? ?? ??? ???? ?????????
MySQL
???? ?? ??:
SELECT * FROM test ORDER BY id DESC LIMIT 10000, 20;
LIMIT 10000, 20? ??? ???? 10020?? ?? ???? ?? 10000?? ?? ???? ??? 20?? ?? ????? ?????. LIMIT 1000000, 100, 1000100?? ?? ???? ?? ?? ??? ????????? ? ??? 100W ??? ?? ???? ???.
MongoDB
???? ?? ??:
db.t_data.find().limit(5).skip(5);
????? ??? ?? ????? ???? ??? ?????, ? ??? ??? ???? ?? ?????. ?? ?????. ??? ??? ?? ?? ???? ????? ??? ????.
ElasticSearch
???? ???? ElasticSearch? ???? ??????? ?? ?? ?????. ?? ???? ??? ???? ???? ??? ??? ???? ?? ? ????. ?? ? ???? ????? ES? ??? ??????? ???? ??? ? ??? max_result_window? ??? ???? ???. ???? ?? ??? ??? 10,000??? ??? ?? ?????
?? ????:
?? ?? ???? 10?? ??? ?? 501???? ???? ?????? ??? ??? ????.
? ??? ???? ? ??? ???????? ? ??? ?? 5010?? ????
?? ??? ??? ??? ? ???? ???? ?? 5010?? ???? ??
?????? ?????
From ?? ?? ???? ???? ?? ??? ? ? ????. ?? ? ??? API? ???? ???? ??? ?? ??? ??? ?? ????. ?? ?? ??? ?? ??? ?? ??? ????? ? ?? ????. ??? 20?? ???? ???? ? ???? ???? ??? ? ????.
??? ?? ?????
???? ??? ??? ??? ? ??? ??? ??? ????? ???!
?? ?? ?? ?? ??? ??? ??? ? ??? + ??? ??? ???? ???. ?? ??? ????? ?? ??????? ??? ?? ??? ????? ???.
?? ??? ??? ??? ?????. ??? ? ??, ???? ???? ?? ??? ?? ?????
??? ?? ?? ?? ??, ??? ?? ?? ??? ??? ??? ??
??? ?? ?? ??:
??? ??? ?? ?? ??:
?? ?? ??
???? ??? ??? ? ?? ?? ??? ?? ?? ?????.
??: ??? ?????. ?? ??? ?? ??? ? ?? ??
Core: ?? ??? ????? ??? ??? ??? ????? ??? ???? ?? ??, ??? ??
Extra: ??? ??? ??? ?? ???? ?? ?? ???? ???? ?? ?? ??? ?? ??? ??? ??? ??? ?? ????
MySQL
?? ??? SQL:
# 第一頁 SELECT * FROM `year_score` where `year` = 2017 ORDER BY id limit 0, 20; # 第N頁 SELECT * FROM `year_score` where `year` = 2017 ORDER BY id limit (N - 1) * 20, 20;
????? ?? ?? ???:
# XXXX 代表已知的數(shù)據(jù) SELECT * FROM `year_score` where `year` = 2017 and id > XXXX ORDER BY id limit 20;
在 沒內(nèi)鬼,來點干貨!SQL優(yōu)化和診斷 一文中提到過,LIMIT會在滿足條件下停止查詢,因此該方案的掃描總量會急劇減少,效率提升Max!
ES
方案和MySQL相同,此時我們就可以隨用所欲的使用 FROM-TO Api,而且不用考慮最大限制的問題。
MongoDB
方案基本類似,基本代碼如下:
相關(guān)性能測試:
如果非要深度隨機跳頁
如果你沒有杠過產(chǎn)品經(jīng)理,又該怎么辦呢,沒關(guān)系,還有一絲絲的機會。
在 SQL優(yōu)化 一文中還提到過MySQL深度分頁的處理技巧,代碼如下:
# 反例(耗時129.570s) select * from task_result LIMIT 20000000, 10; # 正例(耗時5.114s) SELECT a.* FROM task_result a, (select id from task_result LIMIT 20000000, 10) b where a.id = b.id; # 說明 # task_result表為生產(chǎn)環(huán)境的一個表,總數(shù)據(jù)量為3400萬,id為主鍵,偏移量達(dá)到2000萬
該方案的核心邏輯即基于聚簇索引,在不通過回表的情況下,快速拿到指定偏移量數(shù)據(jù)的主鍵ID,然后利用聚簇索引進(jìn)行回表查詢,此時總量僅為10條,效率很高。
因此我們在處理MySQL,ES,MongoDB時,也可以采用一樣的辦法:
限制獲取的字段,只通過篩選條件,深度分頁獲取主鍵ID
通過主鍵ID定向查詢需要的數(shù)據(jù)
瑕疵:當(dāng)偏移量非常大時,耗時較長,如文中的 5s
推薦教程:《MySQL教程》
文章來源:https://juejin.im/post/5f0de4d06fb9a07e8a19a641
? ??? ?? ?? ???? ?? ? ???? ???? ?? MySQL + ES + MongoDB? ???? ??? ??????? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

1. PHP ?? ?? ? ?? ?????? Laravel MySQL VUE/React ??? ? ?? ??? ???? ??? ?? ?? ??? ?? Laravel MySQL VUE/React ??? ? ?? ?????. 2. ???? ?? (REDIS), ?????? ???, CDN ? ??? ?? ???????. 3. ?? ???, CSRF ??, HTTPS, ???? ??? ? ?? ??? ??? ???????. 4. ? ??? ??, ?? ??, ??, ???, ?? ?? ? ?? ??? ??? ???? ? ? ??? ??? ?? ????.

PHP?? ?? ??? ???? ? ?? ?? ??? ????. 1. php.ini? ?? ??? ??; 2. ? ?? (? : Apache? Setenv ?? nginx? FastCGI_Param)? ??????. 3. PHP ?????? putenv () ??? ??????. ? ??? Php.ini? ????? ??? ???? ??? ???? ? ?? ??? ?? ???? ????? ???? Putenv ()? ?? ??? ?????. ?? ???? ?? ?? (? : php.ini ?? ? ?? ??)? ???? ????. ?? ?? ??? ??? ?? ??? ????? ???? ?? ????.

MySQL ?? ???? ???? ?? Terraform? ???? ???, Ansible Management ??, ?? ????? GIT ? ?? ? ?? ??? ???? ????. 1. Terraform? ???? ??, ??, ??? ?? ? AWSRD? ?? ??? ??? ?? MySQL ????? ?????. 2. AnsiblePlayBook? ???? ?????? ??? ??, ?? ?? ?? ?? ?? ??? ?????. 3. ?? ?? ??? GIT ??, ?? ?? ?? ? ?? ??? ?????. 4. ?? ?? ? ??? ??? ??? Vault ?? AnsibleVault? ???? ??? ???? ??? ?? ? ?? ?? ??? ??????.

SSL/TLS ??? MySQL ??? ??? ??? ?????? ????? ?? ??? ?? ??? ???? ?? ??? ? ???? SSL/TLS? ????? ?? ??? ???? ?? ?? ?? ??? ???? ? ????. 2. MySQL? SSL/TLS? ???? ??? ?????? ???? ?? ?? ???? ssl-ca, ssl-cert ? ssl-key ??? ???? ???? ?? ????? ?? ??? ???????. 3. ?????? ??? ? SSL? ???? ??? ?????? ???? ?? ? ? ?? ??? ???? ??; 4. SSL ???? ?? ???? ?? ???? ??? ?? ??, ??? ?? ?? ? ????? ?? ?? ??? ?????.

??? ?? ???? ????? PHP? ?? ??, ??, ?? ? ?? ??? ??????? ?????? ???? ???? ?? ???? ???????. 2. ?? ???? ??? ??? ??? ?? ????????. ???, ?? ???, ?? ?? ?? ?? ??? ??; 3. ?? ?? ???? PHP?? ???? ??? ??? ???? ???? ?? ??? ??? ???? ?? ?? ??? ???? ?? ??? ?????. 4. ?? ??? ???, ??, F1 ? ? CTR, ???? ???? A/B ???? ?? ??? ?????. 5. ?? ??? ??? ?? ??, ??? ?? ??, ?? ?? ?? ? ??? ??? ?? ?? ? ? ????. 6. ?? ??? ???? ?? ? ?? ??, ??? ??, ?? ??? ? SQL ?? ???? ???? ?? ??? ? ??? ??? ?????.

??? PHP ??? ??? ??? ?? ???? ??? ?? ????? ???????. Laravel? ?? ??? ???? ??? ? ? ???? ??? ??? ???? ?????? ?? ? ?? ?? ???? ?????. Symfony? ? ???? ??? ???? ?????. Codeigniter? ??? ??? ?? ??? ?? ??? ?? ????? ?????. 2. AI ??? ???? ????? ??? ??? ??, ???? ?? ?? (? : ???, ??, F1 ?), ??? ? ?? ?? ? ?? ??? ?? ???? ?? ??? ???? ???? ?? ??? ? ?? ???? ?? ?? ??? ????? ?? ???? ????? ?????? ??? ????? ???????. 3. ??? ?? ?? ????? ?? ??? ?????. AES? ?? ??? ???? ????? ?????.

PHP? ??? ?? ??, ?????? ???? ? ?? AI ???? ???? ? ????? ??? ?? ????? ??? ? ??? ??? ??? ?????. 2.?? ??? ?? ?? ??? ????? ???????. ??? ??? ??? ???, PHP ??? ??? ? ?? ??? ???? ?? ?? ?? ??? ???? ??? OpenAI ?? DialogFlow? ?? ?? AI ???? ???? ???? ??? ????. 3. ?? ??? ???? ???? ???? ?? PHP? ?? MySQL ? ?? ??????? ?????. 4. ?? AI ???? guzzle? ???? HTTP ??? ??? Apikeys? ???? ???? ?? ?? ? ?? ??? ? ???????. 5. ?????? ????? ??, ???, ?? ?? ? ??? ???? ???????, ???? ????? ???? ?? ? ??? ???? ?? ???? ???????.

PHP ????? ?? ??? ??? ? ??? ??? CI (Continuous Integration) ????? ???? ? ????. 1. DockerFile? ???? ?? ???, ?? ??, ??? ?? ? ?? ??? ???? PHP ??? ?????. 2. Gitlabci? ?? CI/CD ??? ???? .gitlab-ci.yml ??? ?? ??, ??? ? ?? ??? ???? ?? ??, ??? ? ??? ?????. 3. PHPUNIT? ?? ??? ??? ??? ???? ?? ?? ? ???? ???? ????????. 4. Kubernetes? ?? ?? ?? ??? ???? ?? .yaml ??? ?? ?? ??? ?????. 5. Dockerfile ??? ? ??? ??? ??????
