sql >> Database teknologi >  >> RDS >> Mysql

Er det hurtigere at forbinde/bruge MySQL på localhost i stedet for et domæne (selvom domænet løses til den samme computer)?

Direkte brug af IP-adressen på enhver grænseflade på den lokale vært - enten loopback-grænsefladen (127.0.0.1) eller en hvilken som helst anden - er muligheden med den absolut bedste ydeevne. Pakkerne vil faktisk blive dirigeret gennem loopback-grænsefladen (uanset hvilken IP der rent faktisk bruges) ved - praktisk talt - CPU-hastighed.

Der er dog tre grunde til at foretrække 127.0.0.1 frem for IP'erne på de andre grænseflader:

  • Loopback-grænsefladen er afgørende for driften af ​​systemet, og som sådan er den initialiseret meget tidligt i opstartsprocessen og næsten altid tilgængelig.

  • Det er ikke påvirket af eksterne faktorer:mens fjernelse af eth0-kablet ikke i sig selv vil afbryde localhosts adgang til sig selv via eth0's IP, det vil roder tingene sammen, hvis du har nogle af de mange "autokonfigurations"-systemer, der med glæde vil lukke grænsefladen ved tab af link.

  • Hvis du har en firewall-opsætning, er det meget muligt, at regelkæden er længere (og dermed lidt dårligere ydelsesmæssigt), når IP'erne på de offentlige grænseflader er involveret.

Hvis du bruger værtsnavne, vil localhost-værtsnavnet normalt blive løst af et /etc/hosts-opslag, som er meget hurtigt, selvom brug af IP'en direkte fjerner dette opslag helt. Afhængigt af din opsætning bliver mange også cachelagret i hukommelsen, så det er næsten blændende hurtigt senere.

Hvis du bruger et offentligt værtsnavn, kan dette involvere en DNS-forespørgsel, som indebærer tilføjet CPU-brug og netværksforsinkelse. Brug af en caching-navneserver på den lokale vært vil for det meste fjerne dette problem. Husk dog, at der stadig kan være et problem, hvis din DNS-tjeneste bliver skæv.

Den ene fordel ved at bruge et offentligt værtsnavn ville være, hvis det er noget som db.example.com. som giver dig mulighed for at flytte din database til en separat server uden at skulle ændre konfigurationen af ​​klienterne.

Da du bruger JDBC, antager jeg, at du genbruger en enkelt forbindelse til alle dine forespørgsler, i hvilket tilfælde selve hostnavnets overhead skulle være ubetydelig i alle tilfælde, medmindre du skal håndtere en ødelagt DNS-server. Der kan dog stadig være en vis fordel ved at vælge 127.0.0.1-adressen til dens potentielt mere effektive firewall-opsætning.



  1. Indlæs data fra MySQL-database til HTML-tekstbokse ved knapklik

  2. Kan du bruge flere kolonner til en ikke-forespørgsel?

  3. 15 Grundlæggende MySQL-interviewspørgsmål til databaseadministratorer

  4. Mysql-forespørgsel for at udtrække domæner fra webadresser