Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да се справите с твърде много едновременни връзки дори след използване на пул за връзки?

Стъблото не е достатъчно конкретно, за да даде категорично предложение, но пълният списък на това, което може да се направи, е както следва:

  • Клъстер от база данни :Подходящ за ситуации, в които не искате да променяте слоя на приложението си и базата данни е всичко, което докосвате. Има ограничение за това колко можете да получите от клъстер от база данни. Ако обемът на заявките ви продължава да нараства, това решение в крайна сметка също ще се провали. Но добрата новина е, че разполагате с цялата функционалност, която вече сте имали в обикновен MySQL с един екземпляр.
  • Разделяне :Тъй като вашият въпрос е маркиран с MySQL и не поддържа разделяне самостоятелно, ако искате да използвате това решение, трябва да го приложите в слоя на приложението си. В това решение ще разпръснете данните си в множество бази данни (за предпочитане в множество MySQL екземпляри на отделен хардуер) логически. Ваша отговорност е да намерите подходящата база данни, съдържаща определените от вас данни. Това е едно от най-ефективните решения, но не винаги е осъществимо. Най-големият му недостатък е, че данните, разпръснати между две или повече бази данни, не могат да бъдат включени в транзакция.
  • Репликация :В зависимост от вашия сценарий може да сте в състояние да включите репликация на база данни и да имате копия на вашите данни в тях. По този начин можете да се свържете с тях вместо към главната база данни и да намалите натоварването върху нея. Дефиницията за репликация по подразбиране е сценарий главен/подчинен, при който потокът от данни е еднопосочен, от главен към подчинен. Така че промените, които може да направите на подчинения, докато ще бъдат приложени върху мехлема, те няма да засегнат главния. Но има и конфигурация главен/главен репликация, при която потокът от данни е и по двата начина. И все пак не можете да приемете атомна цялост за едновременни промени в данните между двата главни. В крайна сметка това решение е най-ефективно, ако планирате да го използвате в режим главен/подчинен и да използвате подчинени за достъп само за четене.
  • Кеширане :Може би това решение не трябва да бъде включено тук, но тъй като вашето стебло не го отхвърля, ето го. Един от начините за намаляване на натоварването на базата данни е да се кешират нейните данни, след като бъдат извлечени. Това решение може да бъде от полза, особено ако извличането на данни е скъпо. Има много кеш сървъри, като memcached или redis . По този начин можете да пропуснете толкова много връзки към базата данни, но само за извличане на данни.
  • Други машини за съхранение :Винаги можете да преминете към по-ефективни двигатели, ако текущият ви не ви осигурява това, от което се нуждаете. Разбира се, това е възможно само ако нуждите ви позволяват. В днешно време има NoSQL двигатели, много по-ефективни от RDBMS, които поддържат разделяне и можете да ги мащабирате линейно с минимални усилия. Съществуват и базирани на Lucene решения с мощни възможности за търсене в пълен текст, които ви осигуряват същото автоматично разделяне. Всъщност единствената причина, поради която трябва да използвате традиционна RDBMS, е атомарното поведение на транзакциите. Но ако транзакциите не са задължителни, има много по-добри решения от RDBMS.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да напишете ефективен брояч на посещенията за уебсайтове

  2. Поддръжка на естествен JSON в MYSQL 5.7:какви са предимствата и недостатъците на типа данни JSON в MYSQL?

  3. Трябва ли да използвам NULL или празен низ, за ​​да представя никакви данни в колоната на таблицата?

  4. Покажете всички редове в таблицата на mysql, след което дайте опция за изтриване на конкретни

  5. Форматиране на командния ред на MySQL с UTF8