sql >> Database >  >> RDS >> Mysql

Is het sneller om MySQL te verbinden/gebruiken op localhost in plaats van op een domein (zelfs als het domein naar dezelfde computer wordt omgezet)?

Het rechtstreeks gebruiken van het IP-adres van een interface op de localhost - ofwel de loopback-interface (127.0.0.1) of een andere - is de optie met absoluut de beste prestaties. De pakketten worden daadwerkelijk door de loopback-interface gerouteerd (ongeacht welk IP-adres daadwerkelijk wordt gebruikt) op - praktisch - CPU-snelheid.

Er zijn echter drie redenen om 127.0.0.1 te verkiezen boven de IP's van de andere interfaces:

  • De loopback-interface is cruciaal voor de werking van het systeem en wordt als zodanig al heel vroeg in het opstartproces geïnitialiseerd en is bijna altijd beschikbaar.

  • Het wordt niet beïnvloed door externe factoren:hoewel het verwijderen van de eth0-kabel op zichzelf de toegang van localhost tot zichzelf niet zal onderbreken via het IP-adres van eth0, zal het zal maak er een puinhoop van als je een van de vele "autoconfiguratie"-systemen hebt die de interface graag afsluiten bij verlies van een link.

  • Als je een firewall hebt ingesteld, is het heel goed mogelijk dat de regelketen langer is (en dus iets slechter qua prestaties) wanneer de IP's van de openbare interfaces erbij betrokken zijn.

Als u hostnamen gebruikt, wordt de hostnaam van localhost normaal gesproken opgelost door een /etc/hosts-zoekopdracht die zeer is snel, hoewel het gebruik van het IP-adres deze zoekopdracht volledig verwijdert. Afhankelijk van je instellingen worden er ook veel in het geheugen opgeslagen, zodat het later bijna verblindend snel is.

Als u een openbare hostnaam gebruikt, kan dit een DNS-query inhouden die extra CPU-gebruik en netwerklatentie impliceert. Het gebruik van een cache-naamserver op de lokale host zal dit probleem grotendeels oplossen. Houd er echter rekening mee dat er nog steeds een probleem kan zijn als uw DNS-service schilferig wordt.

Het enige voordeel van het gebruik van een openbare hostnaam is dat het zoiets is als db.example.com. waarmee u uw database naar een aparte server kunt verplaatsen zonder de configuratie van de clients te hoeven wijzigen.

Aangezien je JDBC gebruikt, neem ik aan dat je een enkele verbinding opnieuw gebruikt voor al je vragen, in welk geval de hostnaam die de overhead zelf oplost in alle gevallen verwaarloosbaar zou moeten zijn, tenzij je te maken hebt met een kapotte DNS-server. Er kan echter nog steeds enige verdienste zijn bij het kiezen van het 127.0.0.1-adres vanwege de mogelijk efficiëntere firewallconfiguratie.



  1. Hoe voeg ik twee tabellen samen en vergelijk ik ze? (Ik heb het meerdere keren gevraagd, maar ik kon het antwoord niet vinden.)

  2. Genereer DEFAULT-waarden in een CTE UPSERT met behulp van PostgreSQL 9.3

  3. SQL Server VOOR JSON AUTO Voorbeelden (T-SQL)

  4. Hoe OdbcParameter voor MySQL te gebruiken?