Hacker News

Кездейсоқ енгізу/шығарудың нақты құны

Пікірлер

1 min read Via vondra.me

Mewayz Team

Editorial Team

Hacker News

Сіздің бизнесіңіздің бағдарламалық жасақтамасы болуы керектен баяу - және кездейсоқ енгізу/шығару көзге көрінбейтін кінәлі

Тұтынушы бақылау тақтасының баяу жұмысына шағымданған сайын, сіздің командаңыз есептің жүктелуі үшін қосымша үш секунд күткен сайын және сіздің төлем бетіңіз сатып алушыны шыдамсыздандырған сайын — кездейсоқ енгізу/шығару кірісіңізді тыныштандыратын үлкен мүмкіндік бар. Бұл дерекқор инженерлеріне арналған сөз емес. Бұл CRM іздеулерінен бастап шот-фактураларды құруға дейін әрбір дерлік бизнес қолданбасының ішінде жасырынатын өлшенетін, қымбат тұратын тығырық. Оның нақты құнын түсіну тек техникалық жаттығу емес, бұл қаржылық. Оны елемейтін компаниялар бұлт шоттарының, жоғалған тұтынушылардың және бірден жүктелетін экрандарда тұрып қалған командалардың құнын төлейді.

Кездейсоқ енгізу/шығару шын мәнінде нені білдіреді (және ол неге қымбат)

Негізінде енгізу/шығару — енгізу/шығару — деректерді сақтауға және оқуға жазу процесі. Қолданба дерекқордан жазбаларды алғанда, дискіден файлдарды жүктегенде немесе транзакция журналдарын жазғанда, ол енгізу/шығару әрекеттерін орындайды. Бұл операциялар екі түрлі болады: тізбекті және кездейсоқ. Кезекті енгізу/шығару кітапты басынан аяғына дейін оқу сияқты сабақтас блоктардағы деректерді оқиды немесе жазады. Кездейсоқ енгізу/шығару 47-бетке, одан кейін 3-бетке, содан кейін 812-бетке өту сияқты күтпеген жерден секіреді.

Осы екі үлгі арасындағы өнімділік алшақтығы таң қалдырады. Дәстүрлі қатты дискіде дәйекті оқулар 150-200 МБ/с өткізу қабілетіне қол жеткізе алады, ал кездейсоқ оқулар жиі 0,5-1,5 МБ/с жылдамдықпен тексеріледі — айырмашылық 100x немесе одан да көп. Кездейсоқ енгізу/шығару өнімділігін күрт жақсартатын қазіргі заманғы NVMe SSD дискілерінде де жұмыс жүктемесіне байланысты алшақтық 5-тен 20 есеге дейін ауытқиды. Бизнес қолданбаңыз секундына мыңдаған шағын, шашыраңқы оқу сұрауларын шығарған кезде — тұтынушы атын осында, шот-фактураның жол элементін, басқа жерде рұқсатты тексеру — әрбір секіру микросекундтармен өлшенетін күту уақытын енгізеді, бұл пайдаланушының нақты күту уақытының секундына қосылды.

Физика ондаған жылдар бойы өзгерген жоқ: жадта шашыраңқы деректерге қол жеткізу оларды ретімен ағынмен жіберуге қарағанда айтарлықтай баяу. Қазіргі қолданбалардың кездейсоқ енгізу/шығару шкаласы өзгерді, бұл оның құнын елемеу мүмкін емес.

Әрбір іскерлік операцияға арналған жасырын салық

Бір пайдаланушы CRM бақылау тақтасын ашқанда не болатынын қарастырыңыз. Қолданба тұтынушы кестесін сұрайды, оны соңғы әрекет журналдарымен біріктіреді, байланысты мәміле мәндерін шығарады, пайдаланушы рұқсаттарын тексереді, хабарландырулар санын жүктейді және дисплей теңшелімдерін алады. Бұл сұраулардың әрқайсысы дискідегі әртүрлі орындарда сақталған әртүрлі кестелерге әсер етуі мүмкін. 50 тұтынушы жазбасын көрсететін бақылау тақтасы қақпақ астында 300-ден 500-ге дейін кездейсоқ енгізу/шығару операцияларын жасауы мүмкін. Ең жоғары жұмыс уақытында оны бір мезгілде 200 пайдаланушыға көбейтіңіз және дерекқор серверіңіз секундына 100 000 кездейсоқ оқуды өңдейді.

Бұл гипотетикалық емес. 2024 жылы Percona зерттеуі нашар оңтайландырылған дерекқордың жұмыс жүктемелері енгізу/шығару операцияларын күтуге жалпы орындау уақытының 68%-на дейін жұмсайтынын анықтады, бұл ретте кездейсоқ қол жеткізу үлгілері негізгі құқық бұзушы болып табылады. Мыңдаған бизнеске қызмет көрсететін SaaS компаниясы үшін бұл тікелей инфрақұрылымдық шығындардың жоғарылауына әкеледі. Бұлттық провайдерлер IOPS (секундына енгізу/шығару операциялары) арқылы ақы алады және кездейсоқ енгізу/шығару-шығарылатын жұмыс жүктемелері ай сайынғы жад шоттарын жүздеген доллардан ондаған мың долларға дейін арттыра алады — деректер көлеміне емес, кіру үлгілеріне байланысты.

Құны инфрақұрылымнан тыс. Akamai зерттеулеріне сәйкес, қосымша бет жүктеу уақытының әрбір 100 миллисекундында конверсия жылдамдығын шамамен 7%-ға азайтады. Кездейсоқ енгізу/шығару шот-фактураны құруға немесе есепті жүктеуге толық секунд қосқанда, сіз тек есептеуді ғана емес, кірісті де жағасыз.

Бизнес қолданбалары өнімділікті төмендететін жерде

Енгізу/шығару үлгілеріне қатысты барлық мүмкіндіктер бірдей жасалмайды. Ең кең таралған бизнес операцияларының кейбірі кездейсоқ қол жеткізу үшін ең нашар құқық бұзушылар болып табылады:

  • Іздеу және сүзу: Бірнеше өрістер бойынша сұрау (аты, күні, күйі, тегтері) дерекқорды жадта шашыраңқы индекстерді сканерлеуге мәжбүрлейді, бұл кездейсоқ оқылымдардың көп мөлшерін жасайды
  • Бақылау тақтасының жинақтары: Табысты қосу, белсенді пайдаланушыларды санау немесе мерзімі өткен шот-фактураларды есептеу әртүрлі деректер беттерінде таралған мыңдаған жолдарды түртуді қажет етеді
  • Рұқсатты тексерулер: Көп жалға алушы платформаларындағы рөлге негізделген қатынасты басқару жиі әр сұрау үшін бірнеше іздеуді қажет етеді — пайдаланушы → рөл → рұқсаттар → ресурс — әрқайсысы әртүрлі кестелерге сәйкес келеді
  • Есептерді жасау: Ай сайынғы жалақы есептері, флотқа техникалық қызмет көрсету туралы қорытындылар немесе HR талдаулары бір уақытта ондаған кестелерден деректерді шығарады
  • Нақты уақыттағы хабарландырулар: Модульдер бойынша жаңа хабарларды, тапсырма жаңартуларын және жүйелік ескертулерді тексеру шағын, кездейсоқ сұраулардың тұрақты ағынын жасайды

Үлгі анық: платформа неғұрлым көп модульдер мен мүмкіндіктер ұсынса, енгізу/шығару жолдары соғұрлым көбейеді. Қарапайым сілтеме-ин-био құралы әр бетті жүктеуге 10 сұрау жасай алады. CRM, шот-фактура, HR, жалақы, брондау және аналитикалық модульдері бар толық іскерлік операциялық жүйе - Mewayz өзінің 207 модулінде қамтамасыз ететін сияқты - теориялық тұрғыдан жүздегенді құра алады. Лезде сезілетін платформа мен баяу сезінетін платформа арасындағы айырмашылық көбінесе сол енгізу/шығару үлгілерінің сахна артында қаншалықты ақылды басқарылатынына байланысты.

Неліктен мәселеге жабдықты тастау жұмыс істемейді

Қолданбалар баяулағанда инстинкт жаңарту болып табылады. Үлкенірек серверлер, жылдамырақ SSD дискілері, көбірек жедел жады. Аппараттық құралдарды жақсарту көмектескенімен, олар CFO-ларды ыңғайсыз ететін кірістердің төмендеуінің қисығын ұстанады. Дерекқор серверінің жедел жадын 64 ГБ-тан 128 ГБ-қа дейін екі есе ұлғайту кэшті ұру жылдамдығын 92% -дан 96% -ға дейін жақсартуы мүмкін - бұл айтарлықтай пайда, бірақ қалған 4% кэшті жіберіп алу кездейсоқ енгізу/шығару арқылы жадты әлі де қалдырады. AWS жүйесінде IOPS бөлуді 3 000-нан 10 000-ға дейін үш есе көбейту айына шамамен 450 долларды құрайды, бірақ p99 жауап беру уақытын 30%-ға ғана жақсартады.

Нағыз мәселе - сәулет. Кездейсоқ енгізу/шығару көбінесе тереңірек мәселелердің симптомы болып табылады: жоқ немесе нашар жобаланған индекстер, бағдарлама топтаманың орнына әр элемент үшін бір дерекқор шақыруын жасайтын N+1 сұрау үлгілері, бір дисплей жолы үшін кестені бес біріктіруді талап ететін шамадан тыс нормаланған схемалар және оқылған көшірмелердің немесе кэштеу қабаттарының болмауы. Аппараттық құралдарды жаңарту симптомды емдейді. Архитектураны оңтайландыру себебін өңдейді.

Ең қымбат енгізу/шығару операциясы бірінші кезекте болмауы керек операция болып табылады. Жылдамырақ сақтауға жұмсалған әрбір доллар үшін сұрауды оңтайландыруға жұмсалған он цент жақсы нәтиже береді. Өнімділік бойынша жеңіске жеткен компаниялар бәсекелестіктерінен асып түспейді — олар деректерге қол жеткізу үлгілерінен асып түседі.

💡 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 →

Кездейсоқ енгізу/шығаруды іс жүзінде азайтатын практикалық стратегиялар

Кездейсоқ енгізу/шығаруды азайту қолданбаны толығымен қайта жазуды қажет етпейді. Ол деректерді сақтау, қол жеткізу және кэштеу әдісіне мақсатты, өлшенетін өзгерістерді қажет етеді. Міне, ең жоғары әсер ететін стратегиялар:

  1. Агрессивті сұрауларды топтастыруды жүзеге асыру. N+1 сұрау үлгілерін ынталы жүктеумен ауыстырыңыз. Бақылау тақтасы 50 тұтынушыны және олардың соңғы әрекетін жүктесе, 50 жеке іздеудің орнына WHERE customer_id IN (...) арқылы бір сұрауда барлық 50 әрекет жиынын алыңыз. Осының өзі тізім көріністеріндегі кездейсоқ енгізу/шығаруды 80%-ға азайта алады.
  2. Композиттік индекстерді стратегиялық түрде пайдаланыңыз. (tenant_id, status, created_at) ішіндегі құрама индекс дерекқорға жеке индекстер бойынша бірнеше кездейсоқ іздеулердің орнына бір реттік индексті сканерлеу арқылы жалпы сүзілген сұрауларды қанағаттандыруға мүмкіндік береді.
  3. Интеллектуалды жарамсыздығы бар кэштеу қабатын енгізіңіз. Жадтағы кэш жиі қолжетімді, бірақ сирек өзгеретін деректер — пайдаланушы рұқсаттары, ұйым параметрлері, модуль конфигурациялары — жадта. Redis немесе Memcached оларға микросекундтарда қызмет ете алады, бұл минутта мыңдаған кездейсоқ оқуларды болдырмайды.
  4. Алдын ала есептеу жиынтықтары. Ай сайынғы табысты немесе бақылау тақтасының әрбір жүктемесі бойынша жұмысшылар санын есептеудің орнына, кесте бойынша біріктіру жұмыстарын орындаңыз және нәтижелерді сақтаңыз. Нақты уақыттағы кездейсоқ енгізу/шығару көлемін айтарлықтай азайту үшін деректердің жаңалығының шағын көлемін сатыңыз.
  5. Үлкен кестелерді рұқсат үлгісі бойынша бөліңіз. Сұраулардың 90%-ы соңғы 30 күндегі деректерге тисе, кестелерді күндер ауқымы бойынша бөліңіз, осылайша белсенді бөлім кэште ыстық күйінде қалады, ал тарихи деректер арзанырақ жадта салқын болады.

Бұл экзотикалық әдістер емес. Олар жүздеген мың пайдаланушыларға қызмет көрсететін платформаларға күрделі, көп модульді интерфейстер арқылы секундтық жауап беру уақытын сақтауға мүмкіндік беретін бірдей үлгілер. Mewayz V2 үшін архитектурасын қайта құрған кезде — бір сілтемедегі био құралынан 138 000-нан астам пайдаланушыға қызмет көрсететін 207 модульді бизнес ОЖ-ға дейін масштабтау — енгізу/шығару қатынасының үлгілерін оңтайландыру инфрақұрылым шығындарын пропорционалды түрде көбейтпей, кеңейтуді өміршең ету үшін негіз болды.

Пайдаланушы тәжірибесі мен сақталуына құрама әсері

Өнімділік жай ғана сервер мәселесі емес, ол өнім мүмкіндігі. Google зерттеулері тұрақты түрде ұялы телефонды қолданушылардың 53%-ы жүктелуіне 3 секундтан көп уақыт кететін бетті тастап кететінін көрсетті. Пайдаланушылар күніне ондаған рет өзара әрекеттесетін іскери қолданбалар үшін төзімділік одан да төмен. Апталық есептерді беретін жалақы менеджері, үміткерлерді қарайтын HR жетекші немесе құбыр күйін тексеретін сату өкілі — бұл пайдаланушылар жылдамдықты интуитивті сезінеді. Олар "шот-фактураны біріктіру сұрауындағы кездейсоқ енгізу/шығару кідірісі тым жоғары" деп айтпауы мүмкін, бірақ олар "бұл бағдарламалық құрал баяу сияқты" деп айтып, балама нұсқаларды бағалай бастайды.

Комплекстік әсерді өлшеуге болады. Бақылау тақталарын 2,4 секундтың орнына 800 мс жүктейтін платформа 3 есе жылдамырақ сезініп қана қоймайды, ол пайдалану тәртібін өзгертеді. Пайдаланушылар деректерді жиі тексереді, көбірек модульдерді зерттейді және құралды жұмыс үрдістеріне тереңірек біріктіреді. Неғұрлым жоғары әрекеттесу жоғарырақ сақтауды қамтамасыз етеді, бұл өмірлік құндылықты жоғарылатады. Slack өзінің алғашқы өсуінің маңызды бөлігін өнімділікті оңтайландырумен байланыстырды, бұл жылдамдықтың өзі бәсекеге қабілетті шұңқыр екенін мойындады.

Барлығы бір-бір бизнес платформалары үшін бұл әсер әрбір модульде көбейеді. Егер CRM жылдам болса, бірақ шот-фактура баяу болса, бүкіл платформаны қабылдау нашарлайды. Брондауды басқарудан бастап флотты қадағалауға дейін аналитикаға дейінгі функциялар бойынша өнімділіктің үйлесімділігі тек ең көрінетін модульдерде ғана емес, барлық жерде тұрақты оңтайландырылған енгізу/шығару үлгілерін қажет етеді.

Маңыздыны өлшеу: Кездейсоқ енгізу/шығаруды көрінетін ету

Көрмейтін нәрсені түзете алмайсыз. Кездейсоқ енгізу/шығару шығындарын шешудің бірінші қадамы оларды инженерлік және операциялық топтарға көрінетін ету болып табылады. Datadog, New Relic сияқты заманауи бақылау құралдары немесе тіпті Grafana бар Prometheus сияқты ашық бастапқы шешімдер нақты уақытта IOPS үлгілерін, сұраулардың кешігуінің үлестірімдерін және кэштің хит жылдамдығын бақылай алады. Ең маңызды көрсеткіштер:

  • p95 және p99 сұрауларының кешігуі: Орташа кідіріс ауырсынуды жасырады. 95-ші және 99-шы процентиль пайдаланушылардың ең баяу және ең көңілсіз болғанын көрсетеді
  • Оқу және жазу, ретті және кездейсоқ бойынша IOPS бөлу: Бұл сіздің жұмыс жүктемеңіз енгізу/шығарумен байланысты екенін және қандай енгізу/шығару түрі басым екенін көрсетеді
  • Кэшті пайдалану коэффициенті: Жақсы реттелген жүйеде 95%-дан төмен қатынас жадтан қызмет көрсетілмейтін деректерге қол жеткізу үлгілерін ұсынады
  • Бір бетті жүктеуге арналған сұраулар саны: Егер бір пайдаланушы әрекеті 20-30-дан астам дерекқор сұрауларын іске қосса, оңтайландыру мүмкіндігі бар екені сөзсіз

Осы деректермен қаруланған командалар болжаудан гөрі ең жоғары әсер ететін оңтайландыруларға басымдық бере алады. Енгізу/шығару өнімділігін бірінші дәрежелі метрика ретінде қарастыратын кәсіпорындар – жұмыс уақыты, қате жылдамдығы және пайдаланушының қанағаттанушылығымен қатар – төмен бағамен жылдамырақ өнімдерді дәйекті түрде жеткізеді. Пайдаланушылар бизнес құралдары тұтынушы қолданбалары сияқты жауап береді деп күтетін нарықта бұл тәртіп міндетті емес. Бұл 138 000 пайдаланушыға дейін кеңейетін платформа мен өз күрделілігімен жабылатын платформа арасындағы айырмашылық.

Mewayz көмегімен бизнесіңізді жеңілдетіңіз

Mewayz 207 бизнес модулін бір платформаға біріктіреді — CRM, шот-фактура, жобаны басқару және т.б. Жұмыс процесін жеңілдеткен 138 000+ пайдаланушыға қосылыңыз.

Бүгін тегін бастаңыз→

Жиі қойылатын сұрақтар

Кездейсоқ енгізу/шығару дегеніміз не және ол неге сонша баяу?

Кездейсоқ енгізу/шығару жүйе жад дискісінде әртүрлі, бірізді емес орындардан деректердің шағын бөліктерін оқығанда немесе жазғанда орын алады. Тізбекті енгізу/шығарудан (файлды басынан аяғына дейін оқу) айырмашылығы, оқу/жазу басы үнемі айналып өтіп, елеулі физикалық кідірістерді тудыруы керек. Бұл жалпы деректер көлемі кішірек болса да, шашыраңқы жазбаларды алатын дерекқор сұрауының үлкен бейне файлды ағынмен жіберуге қарағанда әлдеқайда баяу болуының негізгі себебі.

Кездейсоқ енгізу/шығару менің бизнес операцияларыма қалай тікелей әсер етеді?

Ол пайдаланушы тәжірибесі мен өнімділігіне тікелей әсер етеді. Қолданбаның баяу жауаптары тұтынушыларды ренжітеді, бұл арбадан бас тартуға және қолдау билеттеріне әкеледі. Қызметкерлер үшін баяу CRM және есеп беру құралдары құнды уақытты босқа өткізеді. Бұл кешігулер нақты шығындарға айналады: сатылымдарды жоғалту, қызметкерлердің тиімділігін төмендету және жауап беру қабілеті үшін брендтің беделіне ықтимал зиян. Әрбір кідіріс секундының ақшалай мәні бар.

Бұл жай ғана аппараттық мәселе емес пе? Мен жылдамырақ SSD дискілерін сатып ала алмаймын ба?

Жылдамырақ SSD дискілері көмектескенімен, олар қымбат және жиі толық емес шешім болып табылады. Негізгі себеп әдетте көптеген шағын, шашыраңқы дерекқор сұрауларын орындайтын тиімсіз бағдарламалық құрал болып табылады. Кездейсоқ енгізу/шығаруды азайту үшін қолданба кодын және дерекқор сұрауларын оңтайландыру әлдеқайда тиімді. Айына 19 доллардан басталатын 207 алдын ала құрастырылған модулі бар Mewayz сияқты шешімдер деректерге қол жеткізу үлгілерін тиімді түрде жеңілдетуге арналған.

Кездейсоқ енгізу/шығару кедергісі екенін анықтаудың бірінші қадамы қандай?

Қолданбаның өнімділігін бақылау құралдарынан бастаңыз. Секундына жоғары оқу/жазу операцияларын (IOPS) және баяу сұрау уақыттарын көрсететін дерекқор көрсеткіштерін іздеңіз. Жиі, шағын сұрауларды анықтау үшін қолданбаңызды профильдеңіз. Егер бір пайдаланушы әрекеті бірнеше тиімдінің орнына ондаған жеке дерекқор қоңырауларын тудырса, сіз шешуді қажет ететін кездейсоқ енгізу/шығару мәселесін тапқан боларсыз.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime