Am o problema cu crearea tabelelor (cu index, foreign keys). Pe calculatorul meu dureaza cam 20-45 secunde pentru un set de creare a tabelelor. Daca fac acest lucru pe un server VPS de pe Digitalocean, va dura 2-5 secunde.
Sistemul de operare pe calculatorul meu este Debian 9. Am testat pe local, docker, VM…, am testat si mai multe versiuni de mysql insa problema este la fel. Am cautat pe google, si cineva spunea ca trebuie pentru [mysqld] sa maresc innodb_buffer_pool_size si alte proprietati, dar acestea nu ajuta la nimic.
Mentionez ca am HDD pe calculatorul meu, iar VPS-ul foloseste SSD. Poate fi acesta motivul problemei mele?
Nu vad un motiv sa dureze mai mult de cateva secunde.
Poti urmari evolutia bazei de date in timpul rularii scriptului? Se creeaza cate un obiect la fiecare x secunde, sau ai o intarziere de cateva zeci de secunde inainte de a crea primul obiect?
Un complet de interogari poate dura 20 de secunde. Sa spunem creare tabele: users, contacts, invoices, histories, products, media. Fiecare mai are 1-2 indecsi si ceva foreign key. Nimic iesi din comun. Iata daca fac run la toate, o sa dureze in jur la 20 secunde.
Atunci cand lucrez, am nevoie sa fac teste, sa fac fresh, reset apoi iar migration, si ma deranjeaza ca trebuie sa astept asa mult.
ai considerat si varianta sa iti setezi mediul dev tot pe digital ocean?
daca lucrezi pe linux e cu atat mai simplu (cu un ssh-key lucrurile merg ca si cum ar fi local dpdv al comoditatii, iar avantajele sunt multiple: te poti conecta si de pe desktop si de pe laptop, aplicatia e mereu online si poate fi testata si de terti, integrarile cu diferite alte tooluri online e mult mai simpla, etc).
Am incercat, pana se conecteaza la digitalocean dureaza cam 1-2 secunde, dupa conectare totul merge perfect. Problema este ca conexiunea se finiseaza cand primesc raspuns, iar daca vreu sa mai fac un request,iar trebuie sa astept 1-2 secunde pana se conecteaza.
Apropo, stie cineva de ce se intampla asa si daca este vreo solutie?
pai depinde si de ce unelte folosesti.
eu lucrez frecvent cu dev in digitalocean si totul se conecteaza mai bine decat pe local
daca ne referim strict la baza de date… putem analiza optiunile:
te conectezi cu terminal si apoi de acolo lucrezi in linia de comanda (esti deja conectat, poti sa faci cate interogari vrei)
folosesti un tool gui (gen navicat - pentru care ai nevoie de licenta - sau ceva simila free) si ai optiunea de conectare prin ssh (port 22, nu 3306) si de acolo se interogheaza catre localhost.
oricare alta varianta, in functie de preferinte.
cred ca trebuie sa iti stabilesti mai intai nevoile de lucru si apoi sa cauti / testezi varianta care functioneaza pentru tine.
personal, prefer sa nu ma impiedic in timpi din astia de 1-2 secunde sau de 40-45 de secunde (dureaza mai mult sa caut si sa testez rezolvari care s-ar putea sa nu mearga), dar daca se intampla asta frecvent… atunci poate sa fie incomod sau chiar o problema reala.
ideea e ca la intrebarea ta nu prea avem cum sa avem idee de raspuns daca nu cunoastem contextul.
Intrebare poate idioata, dar creezi acele tabele si cu ceva date in ele, sau sunt goale?
Poate este si aia o posibila cauza.
Am avut si eu lag in consola tot de cam 1-2 secunde. Vezi sa ai server-ul prin Europa. Eu la DO in am intr-un datacenter din Frankfurt. Ca daca este prin SUA ai lag.
De exemplu in laravel, am setat datele de logare pentru mysql am setat la host ip-ul serverului de pe digitalocean. Cand incerc sa fac un http-request, evident ca va aplicatia mea va face conexiune cu baza de date si apoi query.