Hacker News

ʻEkolu Layer Cache ma waena o Select a Disk

ʻEkolu Layer Cache ma waena o Select a Disk Hoʻopili kēia ʻimi ʻana i ʻekolu, e nānā ana i kona koʻikoʻi a me kona hopena. Hoʻopili ʻia nā manaʻo kumu Ke ʻimi nei kēia ʻike: Nā kumu kumu a me nā kumumanaʻo Hoʻomaʻamaʻa...

14 min read Via frn.sh

Mewayz Team

Editorial Team

Hacker News

Ke ho'ā kāu palapala noi i kahi ʻōlelo SELECT, ʻaneʻane ʻaʻole hoʻopā kēlā hulina i kahi diski wili a i ʻole ka waiho ʻana o ka flash maka — hele ia ma ʻekolu papa huna huna e hoʻoholo mālie inā hiki mai kāu pane i loko o nā microseconds a i ʻole milliseconds. ʻO ka hoʻomaopopo ʻana i kēia mau papa ʻo ia ka ʻokoʻa ma waena o kahi kahua pāʻoihana e kau ana me ka maʻalahi a me ka mea e paʻa ana ma lalo o ka ukana honua.

He aha ka manawa e haʻalele ai kahi nīnau koho i kāu noi?

I ka manawa e hoʻouna ai kāu palapala noi i kahi nīnau SELECT, komo ia i kahi paipu i ʻike ʻole ʻia e ka hapa nui o nā mea hoʻomohala. Hoʻopili ka ʻenekini waihona i ka noi ma mua o ka loaʻa ʻana o kekahi I/O, e hoʻokaʻawale ana i ka SQL i loko o kahi hoʻolālā hoʻokō kūloko a nīnau koke i kāna laina pale mua: ʻo ka hulina hopena hulina. Inā hoʻokō ʻia kahi nīnau like me nā ʻāpana like i kēia manawa, hiki i ka ʻenekini ke hoʻihoʻi i kahi hopena i hūnā ʻia me ka hoʻopā ʻole ʻana i kahi ʻaoʻao o ka ʻikepili. Kapa ʻia kēia i kekahi manawa ʻo ka query cachea i ʻole ka huli ʻana o ka hopena, a ma nā haʻahaʻa haʻahaʻa heluhelu heluhelu haʻahaʻa - e like me nā dashboards analytics a me nā modula hōʻike - hiki iā ia ke hoʻopau loa i ka hapa nui o nā disk heluhelu.

ʻO ka ʻike koʻikoʻi ma ʻaneʻi ʻo ia ke koʻikoʻi o ka huna huna i nā hoʻololi ʻikepili. ʻO kēlā me kēia INSERT, UPDATE, a i ʻole DELETE e pili ana i ka papaʻaina i lalo e hōʻole i nā hopena i hūnā ʻia. ʻO ia ke kumu e hoʻopau pinepine ai nā ʻōnaehana hana kākau-kaumaha i ka cache hulina a hilinaʻi ma nā papa hohonu.

He aha ka Pool Buffer a no ke aha i ʻoi aku ai ia ma mua o kou manaʻo?

ʻO ka papa huna ʻelua - a ʻo ia ka mea nui loa i nā ʻōnaehana hana - ʻo ia kawai hoʻopaʻa (i kapa ʻia ʻo ka puʻupuʻu kaʻana ma PostgreSQL, ʻo InnoDB buffer pool ma MySQL). ʻO kēia kahi māhele o RAM e hoʻohana ai ka ʻenekini waihona e paʻa i nā ʻaoʻao ʻikepili i loaʻa hou. Inā ʻaʻole hiki ke lawelawe ʻia kahi nīnau mai ka huna huna, e nānā ka ʻenekini inā ua noho mua nā ʻaoʻao ʻikepili i makemake ʻia i loko o ka pūnāwai paʻa ma mua o ka hoʻopuka ʻana i kahi heluhelu disk.

Ke hana nei ka wai hoʻopaʻa ma ke kumumanaʻo o ke kaiapuni kino a me ke kikoʻī: hiki ke ʻike hou ʻia ka ʻikepili i loaʻa i kēia manawa, a ʻike koke ʻia ka ʻikepili i mālama ʻia ma kahi kokoke i ka ʻikepili i loaʻa. Hoʻoponopono nā luna waihona waihona i ka nui o ka wai buffer ma ke ʻano he hoʻoholo hoʻoholo kiʻekiʻe loa a lākou e hana ai. ʻO ka wai hoʻopaʻa liʻiliʻi ka mea e hoʻokuke mau ʻia ai ka ʻaoʻao, e hana ana i kahi hanana i kapa ʻia ʻo thrashing, kahi e hoʻolōʻihi ai ka ʻōnaehana i ka manawa no ka mālama ʻana i nā hala huna huna ma mua o ka hoʻokō ʻana i nā nīnau.

Nāʻike Koʻikoʻi: Ma ka hapa nui o nā haʻawina OLTP, ʻo ka wai hoʻopaʻa nui maikaʻi ʻo ia ka 95-99% o nā heluhelu ʻikepili āpau e lawelawe ʻia mai RAM. ʻO ka pūʻulu hana - ka ʻāpana o kāu ʻikepili i hoʻopā pinepine ʻia - ʻoi aku ka liʻiliʻi ma mua o ka nui o ka waihona. ʻO ka hoʻopaʻa ʻana i kāu pūnāwai paʻa e kūpono i kāu pūʻulu hana, ʻaʻole i kāu ʻikepili holoʻokoʻa, ʻo ia ka hana hoʻolohe kiʻekiʻe loa hiki iā ʻoe ke hana.

Pehea e hoʻopiha ai ka ʻōnaehana ʻōnaehana i ka ʻāpana ma waena o RAM a me Disk?

ʻOiai i ka wā e nalo ai ka pūnāwai ponoʻī o ka waihona, ʻaʻole i hoʻoholo ʻia kahi nīnau no kahi heluhelu disk maoli. Mālama ka ʻōnaehana hana i kahi cache ʻaoʻao(i kapa ʻia hoʻi ʻo ka filesystem cache), kahi ʻāpana o ka kernel-managed RAM e hoʻopaʻa ana i ka heluhelu a me ke kākau ʻana i nā mea hana. Ke noi ka ʻenekini waihona i kahi ʻaoʻao i ʻike ʻole ʻia mai kona pūnāwai hoʻopaʻa, e nānā ka kernel OS i kona huna ʻaoʻao ponoʻī ma mua o ka hoʻopuka ʻana i ke kauoha I/O kino i ka mea mālama mālama.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

ʻAʻole ʻike ʻia kēia papa ʻekolu i nā mea hoʻomohala noiʻi akā he mea koʻikoʻi ma nā ʻōnaehana kahi i hoʻolako ʻole ʻia ai ka waihona waihona waihona. Hoʻokaʻawale ʻia ka ʻaoʻao cache OS ma nā kaʻina hana a pau, no laila ke hoʻokūkū nei me kāu kikowaena noi, kikowaena pūnaewele, a me nā polokalamu ʻē aʻe e holo ana ma ka host hoʻokahi. Ma nā kikowaena waihona i hoʻolaʻa ʻia, he mea liʻiliʻi kēia hoʻokūkū, a hāʻawi ka cache OS i kahi paʻa lua-manawa kūpono. Ma nā pūʻali kaʻana like ʻole a i ʻole nā ipu me nā palena hoʻomanaʻo paʻa, liʻiliʻi pinepine ka waihona OS no ke kōkua.

ʻO wai ka Layer Cache i kuleana no nā lanakila lanakila loa ma ka hoʻomaʻamaʻa?

Ma nā ʻōnaehana hana honua maoli, ʻoi aku ka nui o ka wai buffer i nā hopena hana ma kahi ākea ākea. Eia ke kumu e hāʻawi like ʻole ai kēlā me kēia papa i nā hihia hoʻohana:

  • Hui huna hopena: P He mea ʻole ma nā papa kākau-kaumaha.
  • Pānaehana waihona waihona: ʻO ka mea hana holoʻokoʻa. Pono e hoʻolohe mua i kēlā me kēia kikowaena waihona waihona hana. Hoʻohana maikaʻi ʻia i nā kumu hoʻohana ʻole a me ke kaʻina.
  • Puke o ka ʻaoʻao OS: Hāʻawi i kahi ʻupena palekana i ka wā e liʻiliʻi ka nui o ka pūnāwai. He kōkua nui nō hoʻi i ka wā e nānā pono ai i nā papa nui e hoʻokuke aku ai i nā ʻaoʻao wela mai ka wai hoʻopaʻa.
  • Ke kāke o ka mālama ʻana i ka mālama ʻana (ka papa hana paʻakikī): ʻO ka hā, ka papa i nānā ʻole ʻia - mālama ʻia nā NVMe SSD a me nā mea hoʻokele RAID ma luna o ka papa kuhikuhi i nā huna huna me ka pākaukau a i ʻole ka capacitor backup. Mālama kēia i ka lōʻihi me ka ʻole o ka hāʻawi ʻana i ka helu kākau ʻana ma ka lilo o fsync latency.
  • Pūnaewele papa-apono (Redis, Memcached): Noho ʻia ma luna o ka ʻikepili holoʻokoʻa, e hoʻopaʻa ana i nā hualoaʻa hulina serialized a i ʻole nā mea i helu ʻia i mea e pale aku ai i ka paʻi ʻana i ka ʻikepili - kūpono no nā platform SaaS multi-tenant e lawelawe ana i nā tausani o nā mea hoʻohana like.

Pehea e hiki ai i nā papahana pāʻoihana o kēia wā ke hoʻohana i ka hoʻolālā ʻana o ka cache no ka hilinaʻi ʻana ma ka pālākiō?

No nā ʻoihana e hana ana ma nā ʻāpana hana he nui - CRM, hoʻokele papahana, e-commerce, analytics - hoʻoholo pololei ka hoʻolālā cache i ka pane ʻana o ka platform i ka ulu ʻana o nā hui. Hiki i nā paepae i kūkulu ʻia ma luna o kahi hoʻolālā cache i hoʻopaʻa pono ʻia ke lawelawe i nā ʻumi kaukani o nā mea hoʻohana like ʻole me ka uku ʻole o ka hoʻolālā. ʻO ke kī ʻo ka hoʻolālā ʻana i nā hiʻohiʻona komo ʻikepili e pili ana i nā palena huna: mālama i ka ʻikepili wela liʻiliʻi a hiki ke ʻike ʻia nā ʻano hoʻohālike, me ka hoʻohana ʻana i nā replicas heluhelu e puʻunaue i ka haʻahaʻa wai buffer, a me ka hoʻonoho ʻana i kahi huna huna e like me Redis i mua o ka waihona no nā helu hope e lawelawe ana i ka ʻikepili like i nā mea hoʻohana he nui i ka manawa like.

Kūkulu ʻia ʻo Mewayz me kēia manaʻo noʻonoʻo. Me 207 mau modula pāʻoihana i hoʻohui ʻia e mana ana ma luna o 138,000 mea hoʻohana, ua hoʻolālā ʻia ka papa ʻikepili o ka platform i mea e lawelawe ʻia ai ka hapa nui o nā heluhelu mai kahi huna — mālama i nā manawa pane wikiwiki a hiki ke wānana nā kumukūʻai ʻoihana inā e holo ana ʻoe ma ka papahana hoʻomaka $19/malama a i ʻole ka pae ʻoihana $49/malama.

Nīnau pinepine

E hoʻomaikaʻi mau ana ka hoʻopaʻa ʻana i ka hūnā hulina i ka hana ʻikepili?

ʻAʻole i nā manawa a pau, akā no nā haʻahaʻa hana kākau-kaumaha. Pono ka huna huna i kahi mutex honua e mālama i ke kūlike, a lilo ia i bottleneck ma lalo o ka concurrency kiʻekiʻe. Ua wehe ʻo MySQL 8.0 i ka cache hulina no kēia kumu. ʻAʻole i hoʻokomo ʻo PostgreSQL i kahi cache hulina i kūkulu ʻia, e hilinaʻi ana ma ka wai buffer a me ka cache layer-layer. Inā kiʻekiʻe kāu lakio heluhelu-a-kākau a ʻoi aku ka hana hou ʻana o kāu mau nīnau, hiki i kahi huna hulina ke hāʻawi i nā loaʻa maoli - a i ʻole, e hoʻolilo i kēlā hoʻoikaika ʻana i ka pūnāwai.

Pehea au e ʻike ai inā pololei ka nui o kaʻu pūnāwai?

Mālama i kāu lākiō hoʻopaʻa pūnāwai: ka pākēneka o nā noi ʻaoʻao i lawelawe ʻia mai ka pūnāwai me nā mea e koi ana i ka heluhelu disk. ʻO ka lakio pā ma lalo o 95% ma kahi haʻahaʻa hana OLTP he hōʻailona e hoʻonui i ka nui o ka loko. Ma MySQL, e huli i SHOW ENGINE INNODB STATUS a e nānā i ka nui o ka loaʻa ʻana o ka pool buffer. Ma PostgreSQL, ʻo ka pg_statio_user_tables e hōʻike ana i nā poloka puʻu i heluhelu ʻia mai ka disk me ka lawelawe ʻana mai ka puna wai. Manaʻo e mālama i kāu pūʻulu hana holoʻokoʻa - ʻaʻole kāu ʻikepili piha - noho ma RAM.

He aha ka pilina ma waena o nā papa huna a me ka hilinaʻi SaaS multi-tenant?

Ma nā SaaS lehulehu, pale nā papa huna i nā pilikia "noisy neighbor" kahi e hoʻohaʻahaʻa ai ka haʻawe nīnau koʻikoʻi o kekahi mea hoʻolimalima i ka hana no nā mea hoʻolimalima ʻē aʻe. ʻO ka hoʻopaʻa inoa ʻana i ka mea hoʻolimalima me ka hōʻole ʻana i ka TTL e mālama i ka ʻikepili wela no kēlā me kēia mea hoʻolimalima ma Redis, e hōʻemi nui ana i ke kaomi wai buffer mai nā moʻokāki nui. ʻO ka hui pū ʻana o ka hui ʻana i ka pae ʻikepili i hui pū ʻia me kahi pūnāwai pumehana e hōʻoia ʻaʻole e hoʻokaʻawale ka hana ʻana mai kekahi moʻokāki hoʻokahi i nā ʻaoʻao i kaʻana like ʻia mai kahi huna huna a hoʻoulu i ka piʻi ʻana o ka latency ma waena o ka paepae.


ʻAʻole ʻo nā papa huna he waihona trivia — ʻo ia ke kumu kūkulu hale e hoʻokaʻawale ai i nā paepae e noho wikiwiki ana ma ka pālākiō mai nā mea e koi ana i ke ahi mau. Inā ke kūkulu nei ʻoe a i ʻole ke holo ʻana i kahi ʻoihana e pono ana i kahi paepae i hoʻopaʻa ʻia no kēia mau ʻoiaʻiʻo, e ʻimi iā Mewayz ma app.mewayz.com — 207 modules, hoʻokahi paepae pili, i kūkulu ʻia e hana hilinaʻi mai kāu mea hoʻohana mua a hiki i kāu haneli haneli.