{"id":225947,"date":"2022-08-17T19:41:00","date_gmt":"2022-08-17T16:41:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=225947"},"modified":"2022-11-08T10:31:19","modified_gmt":"2022-11-08T07:31:19","slug":"22-najlepsze-praktyki-mysql-do-nasladowania-jako-programista-w-2019-r","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/22-najlepsze-praktyki-mysql-do-nasladowania-jako-programista-w-2019-r\/","title":{"rendered":"22 najlepsze praktyki MySQL do na\u015bladowania jako programista w 2019 r."},"content":{"rendered":"\n<p>MySQL to drugi najpopularniejszy na \u015bwiecie system zarz\u0105dzania relacyjnymi bazami danych typu open source. Jest u\u017cywany na ca\u0142ym \u015bwiecie ze wzgl\u0119du na niezmiennie wysok\u0105 wydajno\u015b\u0107, wysok\u0105 niezawodno\u015b\u0107 i \u0142atwo\u015b\u0107 u\u017cytkowania. W tym artykule przedstawiono niekt\u00f3re z najlepszych praktyk MySQL.<\/p>\n<p>Dzi\u0119ki nim mo\u017cesz \u0107wiczy\u0107 SQL i ustawi\u0107 sobie \u0107wiczenia SQL, pozna\u0107 limit SQL i \u0107wiczy\u0107 SQL online, a tak\u017ce o najcz\u0119stszych problemach zwi\u0105zanych z praktyk\u0105 SQL.<\/p>\n<p>Pomo\u017ce Ci zrozumie\u0107 SQL numer wiersza, top SQL, przesuni\u0119cie limitu MySQL i praktyk\u0119 SQL online.<\/p>\n<p>Je\u015bli szukasz przyjemnego i \u0142atwego sposobu na wy\u015bwietlenie du\u017cej liczby wierszy i kolumn odwiedzaj\u0105cym Twoj\u0105 witryn\u0119 WordPress z kolorowymi, informacyjnymi i responsywnymi interaktywnymi tabelami i wykresami, mo\u017cesz go u\u017cy\u0107 z wtyczk\u0105 wpDataTables, sprawd\u017a ceny i wszystkie funkcjonalno\u015bci jakie daje <a href=\"https:\/\/wpdatatables.com\/pricing\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tutaj<\/a>.<\/p>\n<h2><strong>1 Zawsze u\u017cywaj w\u0142a\u015bciwego typu danych<\/strong><\/h2>\n<p>Jedn\u0105 z najwa\u017cniejszych najlepszych praktyk MySQL jest u\u017cywanie typ\u00f3w danych opartych na naturze danych. U\u017cywanie nieistotnych typ\u00f3w danych mo\u017ce zajmowa\u0107 wi\u0119cej miejsca lub prowadzi\u0107 do b\u0142\u0119d\u00f3w.<\/p>\n<p>Na przyk\u0142ad: U\u017cycie varchar (20) zamiast typu danych DATETIME do przechowywania warto\u015bci daty i czasu doprowadzi do b\u0142\u0119d\u00f3w w obliczeniach zwi\u0105zanych z dat\u0105 i godzin\u0105. Mo\u017cliwe jest r\u00f3wnie\u017c, \u017ce zostan\u0105 zapisane nieprawid\u0142owe dane.<\/p>\n<h2><strong>2 U\u017cyj CHAR (1) zamiast VARCHAR (1)<\/strong><\/h2>\n<p>VARCHAR (1) zajmuje dodatkowe bajty do przechowywania informacji, wi\u0119c je\u015bli napiszesz pojedynczy znak, lepiej u\u017cy\u0107 CHAR (1).<\/p>\n<h2><strong>3 U\u017cyj typu danych CHAR do przechowywania tylko danych o sta\u0142ej d\u0142ugo\u015bci<\/strong><\/h2>\n<p>Na przyk\u0142ad: Je\u015bli d\u0142ugo\u015b\u0107 danych jest mniejsza ni\u017c 1000, u\u017cycie char (1000) zamiast varchar (1000) zajmie wi\u0119cej miejsca.<\/p>\n<h2><strong>4 Unikaj u\u017cywania regionalnych format\u00f3w dat<\/strong><\/h2>\n<p>U\u017cywaj\u0105c typu danych DATETIME lub DATE, zawsze u\u017cywaj formatu daty RRRR-MM-DD lub formatu daty ISO odpowiedniego dla Twojego SQL Engine. Formaty regionalne, takie jak DD-MM-RRRR lub MM-DD-RRRR, nie b\u0119d\u0105 prawid\u0142owo przechowywane.<\/p>\n<h2><strong>5 kolumn klucza indeksu<\/strong><\/h2>\n<p>Po\u017c\u0105dane jest, aby zapytanie szybko zwr\u00f3ci\u0142o wynik, dlatego nale\u017cy zindeksowa\u0107 kolumny, kt\u00f3re s\u0105 u\u017cywane w klauzulach JOIN.<\/p>\n<p>W przypadku u\u017cycia instrukcji UPDATE obejmuj\u0105cej wi\u0119cej ni\u017c jedn\u0105 tabel\u0119, nale\u017cy zindeksowa\u0107 wszystkie kolumny, kt\u00f3re s\u0105 u\u017cywane do \u0142\u0105czenia tabel.<\/p>\n<h2><strong>6 Nie u\u017cywaj funkcji nad indeksowanymi kolumnami\u2026<\/strong><\/h2>\n<p>\u2026 bo wtedy indeks traci sw\u00f3j cel.<\/p>\n<p>Za\u0142\u00f3\u017cmy na przyk\u0142ad, \u017ce chcesz uzyska\u0107 dane, w kt\u00f3rych pierwsze dwa znaki kodu klienta to AK. Pisa\u0107:<\/p>\n<p><code>SELECT columns FROM table WHERE customer_code like 'AK%'<\/code><\/p>\n<p>i nie pisz<\/p>\n<p><code>SELECT columns FROM table WHERE left (customer_code,2)='AK\u2019<\/code><\/p>\n<p>Czemu? Pierwszy przyk\u0142ad wykorzysta indeks, co spowoduje szybszy czas odpowiedzi.<\/p>\n<h2><strong>7 U\u017cyj SQL SELECT * tylko w razie potrzeby<\/strong><\/h2>\n<p>Pod\u0105\u017caj\u0105c za list\u0105 najlepszych praktyk MySQL, nie u\u017cywaj na \u015blepo SELECT * w kodzie. Je\u015bli tabela ma wiele kolumn, wszystkie zostan\u0105 zwr\u00f3cone. Spowoduje to spowolnienie czasu odpowiedzi, zw\u0142aszcza je\u015bli wy\u015blesz wynik do aplikacji typu front-end.<\/p>\n<p>Zamiast tego wyra\u017anie wpisz nazwy kolumn, kt\u00f3re s\u0105 faktycznie potrzebne.<\/p>\n<p>Uwaga: pami\u0119taj, \u017ce wszystkie instrukcje SELECT wymagaj\u0105 klauzuli WHERE.<\/p>\n<h2><strong>8 U\u017cywaj klauzuli ORDER BY tylko w razie potrzeby<\/strong><\/h2>\n<p>Je\u015bli chcesz pokaza\u0107 wynik w aplikacji front-endowej, pozw\u00f3l jej ZAM\u00d3WI\u0106 zestaw wynik\u00f3w. Je\u015bli zrobisz to w SQL, czas odpowiedzi mo\u017ce zosta\u0107 spowolniony w \u015brodowisku wielu u\u017cytkownik\u00f3w.<\/p>\n<h2><strong>9 Wybierz odpowiedni silnik bazy danych<\/strong><\/h2>\n<p>Je\u015bli tworzysz aplikacj\u0119, kt\u00f3ra cz\u0119\u015bciej odczytuje dane ni\u017c zapisuje (np. wyszukiwark\u0119), wybierz silnik pami\u0119ci masowej MyISAM.<\/p>\n<p>Wyb\u00f3r niew\u0142a\u015bciwego silnika pami\u0119ci masowej wp\u0142ynie na wydajno\u015b\u0107.<\/p>\n<h2><strong>10 W razie potrzeby u\u017cyj klauzuli EXISTS<\/strong><\/h2>\n<p>Aby sprawdzi\u0107 istnienie danych, u\u017cyj klauzuli EXISTS, kt\u00f3ra jest szybsza w czasie odpowiedzi. Na przyk\u0142ad u\u017cyj:<\/p>\n<p><code>If EXISTS(SELECT * from Table WHERE col=\u2019some value\u2019)<\/code><\/p>\n<p>Nie u\u017cywa\u0107 :<\/p>\n<p><code>If (SELECT count(*) from Table WHERE col=\u2019some value\u2019)&gt;0<\/code><\/p>\n<h2><strong>11 WYJA\u015aNIJ swoje WYBRANE pytania<\/strong><\/h2>\n<p>Je\u015bli u\u017cyjesz s\u0142owa kluczowego EXPLAIN, mo\u017cesz uzyska\u0107 wgl\u0105d w to, co MySQL robi, aby wykona\u0107 zapytanie. Mo\u017ce to pom\u00f3c w wykryciu problem\u00f3w ze strukturami zapyta\u0144 lub tabel (np. w\u0105skich garde\u0142).<\/p>\n<p>Zapytanie EXPLAIN pokazuje, kt\u00f3re indeksy s\u0105 u\u017cywane, jak tabela jest skanowana, sortowana itp.<\/p>\n<p>Wystarczy doda\u0107 s\u0142owo kluczowe EXPLAIN przed zapytaniem SELECT (najlepiej z\u0142o\u017conym z \u0142\u0105cznikami). Ponadto, je\u015bli u\u017cyjesz do tego phpmyadmina, twoje wyniki zostan\u0105 pokazane w \u0142adnej tabeli.<\/p>\n<h2><strong>12 U\u017cyj LIMIT 1, gdy otrzymasz unikalny rz\u0105d<\/strong><\/h2>\n<p>Czasami wiesz z g\u00f3ry, \u017ce podczas wykonywania zapyta\u0144 do tabel szukasz tylko jednego wiersza. Na przyk\u0142ad mo\u017cesz pobiera\u0107 unikalny rekord lub po prostu sprawdza\u0107 istnienie dowolnej liczby rekord\u00f3w spe\u0142niaj\u0105cych klauzul\u0119 WHERE.<\/p>\n<p>W takich przypadkach b\u0119dziesz chcia\u0142 u\u017cy\u0107 funkcji limitu MySQL, aby zwi\u0119kszy\u0107 wydajno\u015b\u0107. Oto kolejna z najlepszych praktyk MySQL: po prostu dodaj LIMIT 1 do zapytania. W ten spos\u00f3b silnik bazy danych nie b\u0119dzie musia\u0142 przechodzi\u0107 przez ca\u0142\u0105 tabel\u0119 lub indeks. Przestanie skanowa\u0107, gdy znajdzie tylko 1 rekord tego, czego szukasz.<\/p>\n<p><code>\/\/ do I have anyusersfrom Alabama?<\/code><\/p>\n<p>\/\/ czego NIE robi\u0107:<br \/>\n$r = mysql_query(&#8222;SELECT * FROM user WHERE state = 'Alabama&#8217;&quot;);<br \/>\nif (mysql_num_rows($r) &gt; 0) {<br \/>\n\/\/ \u2026<br \/>\n}<\/p>\n<p>\/\/ znaczniebetter:<br \/>\n$r = mysql_query(&quot;SELECT 1 FROM user WHERE state = 'Alabama&#8217; LIMIT 1&quot;);<br \/>\nif (mysql_num_rows($r) &gt; 0) {<br \/>\n\/\/ \u2026<br \/>\n}<\/p>\n<h2><strong>13 Indeksuj i u\u017cywaj tych samych typ\u00f3w kolumn dla z\u0142\u0105cze\u0144<\/strong><\/h2>\n<p>Kolejna wa\u017cna wskaz\u00f3wka dotycz\u0105ca najlepszych praktyk MySQL \u2014 je\u015bli Twoja aplikacja ma wiele zapyta\u0144 JOIN, upewnij si\u0119, \u017ce kolumny, kt\u00f3rymi si\u0119 \u0142\u0105czysz, s\u0105 indeksowane w obu tabelach. Wp\u0142ywa to na wewn\u0119trzn\u0105 optymalizacj\u0119 operacji \u0142\u0105czenia przez MySQL.<\/p>\n<p>Ponadto po\u0142\u0105czone s\u0142upy musz\u0105 by\u0107 tego samego typu. Na przyk\u0142ad, je\u015bli po\u0142\u0105czysz kolumn\u0119 DECIMAL z kolumn\u0105 INT z innej tabeli, MySQL nie b\u0119dzie m\u00f3g\u0142 u\u017cywa\u0107 \u017cadnego z indeks\u00f3w. Nawet kodowanie znak\u00f3w musi by\u0107 tego samego typu dla kolumn typu string.<\/p>\n<p><code>\/\/ looking for companies in my state $r = mysql_query(\"SELECT company_name FROM users LEFT JOIN companies ON (users.state = companies.state) WHERE users.id = $user_id\");<\/code><\/p>\n<p>\/\/ obie kolumny stanu powinny by\u0107 indeksowane<br \/>\n\/\/ i obie powinny mie\u0107 ten sam typ i kodowanie znak\u00f3w<br \/>\n\/\/ lub MySQL mo\u017ce wykonywa\u0107 pe\u0142ne skanowanie tabel<\/p>\n<h2><strong>14 Ukryj MySQL przed Internetem<\/strong><\/h2>\n<p>Wiedz\u0105 o tym do\u015bwiadczeni administratorzy baz danych i personel ds. bezpiecze\u0144stwa \u2014 nigdy nie umieszczaj bazy danych w katalogu g\u0142\u00f3wnym serwera WWW.<\/p>\n<p>W przypadku aplikacji obs\u0142uguj\u0105cych Internet MySQL powinien by\u0107 ukryty za zapor\u0105 sieciow\u0105. Komunikacja powinna by\u0107 w\u0142\u0105czona tylko mi\u0119dzy serwerami aplikacji a serwerami WWW.<\/p>\n<p>Inn\u0105 opcj\u0105 jest u\u017cycie pomijania sieci MySQL. Gdy jest w\u0142\u0105czony, MySQL nas\u0142uchuje tylko lokalnych po\u0142\u0105cze\u0144 gniazd i ignoruje wszystkie porty TCP.<\/p>\n<h2><strong>15 U\u017cyj najmniejszych mo\u017cliwych typ\u00f3w danych<\/strong><\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-206970-61e8d4b73d55e.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-206970-61e8d4b73d55e.jpg\" alt=\"22 najlepsze praktyki MySQL do na\u015bladowania jako programista w 2019 r.\" ><\/a><\/p>\n<p>Pozw\u00f3l, \u017ce opowiem ci histori\u0119. Kiedy chodzi\u0142em do college&#8217;u, filozofia by\u0142a taka, \u017ce \u200b\u200b\u201epami\u0119ci jest ma\u0142o&quot;. To by\u0142y czasy dysk\u00f3w twardych 256 MB. W dzisiejszych czasach nikt nie przejmuje si\u0119 ani troch\u0119 pami\u0119ci\u0105 lub miejscem na dysku twardym. Nowa filozofia m\u00f3wi, \u017ce \u201epami\u0119\u0107 jest tania&#8221;. Mo\u017ce to by\u0107 prawda w dolarach, ale odczytywanie du\u017cych typ\u00f3w danych nadal trwa d\u0142u\u017cej ni\u017c odczytywanie mniejszych. Du\u017ce typy danych wymagaj\u0105 wczytania do pami\u0119ci wi\u0119kszej liczby sektor\u00f3w dysku.<\/p>\n<p>Mora\u0142 polega na tym, \u017ce podczas projektowania tabel zignoruj \u200b\u200bpokus\u0119, aby natychmiast przeskoczy\u0107 do najwi\u0119kszego typu danych. Pomy\u015bl o u\u017cyciu int zamiast bigint.<\/p>\n<p>Unikaj r\u00f3wnie\u017c p\u00f3l tekstowych typu largechar (255), gdy wystarczy varchar lub mniejszy znak.<\/p>\n<p>Je\u015bli u\u017cyjesz w\u0142a\u015bciwego typu danych, wi\u0119cej rekord\u00f3w zmie\u015bci si\u0119 w pami\u0119ci lub bloku klucza indeksu. Prowadzi to do mniejszej liczby odczyt\u00f3w i wi\u0119kszej wydajno\u015bci.<\/p>\n<h2><strong>16 Skorzystaj z buforowania zapyta\u0144<\/strong><\/h2>\n<p>Buforowanie zapyta\u0144 to jedna z najskuteczniejszych metod zwi\u0119kszania wydajno\u015bci. Wi\u0119kszo\u015b\u0107 serwer\u00f3w MySQL ma to domy\u015blnie w\u0142\u0105czone.<\/p>\n<p>Pami\u0119\u0107 podr\u0119czna zapyta\u0144 przechowuje tekst instrukcji SELECT wraz z odpowiednim zestawem wynik\u00f3w. Je\u015bli serwer p\u00f3\u017aniej otrzyma identyczn\u0105 instrukcj\u0119, pobierze wyniki z pami\u0119ci podr\u0119cznej zapyta\u0144, zamiast analizowa\u0107 i ponownie wykonywa\u0107 instrukcj\u0119. Pami\u0119\u0107 podr\u0119czna zapyta\u0144 jest wsp\u00f3\u0142u\u017cytkowana przez sesje, dzi\u0119ki czemu zestaw wynik\u00f3w wygenerowany przez jednego klienta mo\u017ce zosta\u0107 wys\u0142any w odpowiedzi na to samo zapytanie wys\u0142ane przez innego klienta.<\/p>\n<p>Jednak, jakkolwiek jest \u015bwietne, buforowanie zapyta\u0144 ma swoje ograniczenia. We\u017a nast\u0119puj\u0105ce zdanie:<\/p>\n<p>Problem polega na tym, \u017ce zapytania zawieraj\u0105 pewne niedeterministyczne funkcje, takie jak NOW() i RAND(). MySQL nie mo\u017ce z g\u00f3ry obliczy\u0107 takich funkcji, wi\u0119c nie s\u0105 one buforowane.<\/p>\n<p>Na szcz\u0119\u015bcie jest na to proste rozwi\u0105zanie: mo\u017cesz przechowywa\u0107 wyniki funkcji w zmiennej.<\/p>\n<h2><strong>17 Nie edytuj plik\u00f3w zrzutu<\/strong><\/h2>\n<p>Pliki zrzutu s\u0105 bardzo myl\u0105ce i mog\u0105 powodowa\u0107 uszkodzenie. Czemu? Je\u015bli kiedykolwiek widzia\u0142e\u015b pliki zrzutu utworzone przez mysqldump, zgodzisz si\u0119, \u017ce wygl\u0105daj\u0105 jak zwyk\u0142e, nieszkodliwe pliki tekstowe. Dlatego wi\u0119kszo\u015b\u0107 ludzi edytuje je w standardowym edytorze tekstu, co powoduje pojawienie si\u0119 uszkodze\u0144.<\/p>\n<p>Je\u015bli kiedykolwiek pr\u00f3bowa\u0142e\u015b edytowa\u0107 pliki zrzut\u00f3w, szybko dowiedzia\u0142e\u015b si\u0119, \u017ce nie s\u0105 to pliki tekstowe. Tak wi\u0119c jedynym gwarantowanym sposobem unikni\u0119cia problem\u00f3w jest pozostawienie plik\u00f3w zrzutu w spokoju.<\/p>\n<h2><strong>18 U\u017cyj ustawienia rozmiaru bloku MyISAM<\/strong><\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-206970-61e8d4b8518b8.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-206970-61e8d4b8518b8.jpg\" alt=\"22 najlepsze praktyki MySQL do na\u015bladowania jako programista w 2019 r.\" ><\/a><\/p>\n<p>Ustawienie rozmiar\u00f3w blok\u00f3w w indeksach tabel MyISAM jest jedn\u0105 z najlepszych praktyk MySQL. Mo\u017cna go znale\u017a\u0107 w plikach .MYI w buforze klucza, a tak\u017ce na dysku. Ustawienie wygl\u0105da tak: myisam_block_size.<\/p>\n<p>Ma domy\u015bln\u0105 warto\u015b\u0107 1k. Jest do\u015b\u0107 ma\u0142y, aby by\u0142 optymalny w nowoczesnym systemie. Wi\u0119kszo\u015b\u0107 system\u00f3w plik\u00f3w u\u017cywa blok\u00f3w o wi\u0119kszym rozmiarze. Wiemy, \u017ce napisanie pojedynczego bloku indeksu wymaga odczytu, a nast\u0119pnie zapisu. System operacyjny nigdy nie b\u0119dzie musia\u0142 zapisywa\u0107 danych na dysku, o ile rozmiar bloku jest r\u00f3wny lub wi\u0119kszy ni\u017c rozmiar bloku systemu plik\u00f3w.<\/p>\n<h2><strong>19 W\u0142\u0105cz delay_key_write<\/strong><\/h2>\n<p>Delay_key_write jest domy\u015blnie wy\u0142\u0105czone. Jest ku temu pow\u00f3d. Je\u015bli wyst\u0105pi\u0142a awaria w trakcie projektu, Twoja baza danych mo\u017ce zosta\u0107 uszkodzona.<\/p>\n<p>Dlaczego wi\u0119c chcesz go w\u0142\u0105czy\u0107? Pow\u00f3d jest prosty. Poniewa\u017c delay_key_write zapewnia, \u017ce \u200b\u200bbaza danych nie opr\u00f3\u017cni pliku klucza MyISAM po ka\u017cdym zapisie. Dlatego te\u017c, je\u015bli w najbli\u017cszym czasie b\u0119dziesz pisa\u0107 kolejny raz, zaoszcz\u0119dzisz sporo czasu.<\/p>\n<p>Oto kolejna fajna wskaz\u00f3wka, kt\u00f3r\u0105 wybrali\u015bmy z najlepszych praktyk MySQL: W\u0142\u0105czanie delay_key_write jest inne dla ka\u017cdej wersji. Aby zobaczy\u0107, jak go w\u0142\u0105czy\u0107 w okre\u015blonej wersji, zapoznaj si\u0119 z oficjalnym podr\u0119cznikiem witryny MySQL.<\/p>\n<h2><strong>20 U\u017cyj \u015bledzenia stosu, aby wyizolowa\u0107 b\u0142\u0119dy<\/strong><\/h2>\n<p>Zgodnie z najlepszymi praktykami MySQL, ta wskaz\u00f3wka zosta\u0142a zapo\u017cyczona ze Sky SQL, poniewa\u017c jest po prostu zbyt prosta i zbyt wygodna, aby j\u0105 pomin\u0105\u0107.<\/p>\n<p>Stack_trace MySQL mo\u017ce s\u0142u\u017cy\u0107 do izolowania r\u00f3\u017cnych b\u0142\u0119d\u00f3w. Zamiast zag\u0142\u0119bia\u0107 si\u0119 we wszystkie mo\u017cliwe zastosowania, programista mo\u017ce chcie\u0107 zwr\u00f3ci\u0107 uwag\u0119 na to, jak \u0142atwo pusty wska\u017anik mo\u017ce zrujnowa\u0107 tw\u00f3j kod.<\/p>\n<p>Dzi\u0119ki tej wskaz\u00f3wce Sky SQL wykrywanie, \u015bledzenie i naprawianie staje si\u0119 znacznie \u0142atwiejsze.<\/p>\n<h2><strong>21 MySQL zmienia has\u0142o ROOT<\/strong><\/h2>\n<p>Zmiana has\u0142a ROOT mo\u017ce wydawa\u0107 si\u0119 prosta, ale wiedza, jak to zrobi\u0107, jest r\u00f3wnie wa\u017cna dla domowego systemu operacyjnego, jak i serwer\u00f3w MySQL.<\/p>\n<p>Czasami zdarza si\u0119, \u017ce nadgorliwi pocz\u0105tkuj\u0105cy i roztargnieni do\u015bwiadczeni u\u017cytkownicy nie mog\u0105 zrozumie\u0107, dlaczego nie mog\u0105 zmieni\u0107 niekt\u00f3rych ustawie\u0144 i zwracaj\u0105 b\u0142\u0119dy. To mo\u017ce by\u0107 tak proste, jak przyznanie sobie dost\u0119pu ROOT. U\u017cytkownik nie powinien nawet go wyszukiwa\u0107.<\/p>\n<p>Oto jak ustawi\u0107 has\u0142o ROOT i jak zmieni\u0107 has\u0142o ROOT u\u017cytkownika:<\/p>\n<p><code>\/\/Straightforward MySQL 101 $mysqladmin -u rootpassword [Type in selectedpassword] \/\/Changingusers ROOT password $mysqladmin -u root -p [type oldpassword] newpass [hit enter and type new password. Pressenter] \/\/Use mysqlsqlcommand $mysql -u root -p \/\/prompt \"mysql&gt;\" pops up. Enter: $use MySQL; \/\/Enter usernameyouwant to change the password for $update user set password=PASSWORD (Type new PasswordHere) where User = 'username'; \/\/Don'tforget the previoussemicolon, nowreload the settings for the user'sprivileges $flush privileges; $quit<\/code><\/p>\n<h2><strong>22 Napraw swoje pliki konfiguracyjne<\/strong><\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-206970-61e8d4b96bb8a.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-206970-61e8d4b96bb8a.jpg\" alt=\"22 najlepsze praktyki MySQL do na\u015bladowania jako programista w 2019 r.\" ><\/a><\/p>\n<p>MySQL Tuner to skrypt Perla, kt\u00f3ry mo\u017ce w jaki\u015b spos\u00f3b zoptymalizowa\u0107 wydajno\u015b\u0107, sugeruj\u0105c zmiany w plikach konfiguracyjnych.<\/p>\n<p>Je\u015bli niekt\u00f3re wskaz\u00f3wki i triki w MySQL s\u0105 niezwykle wygodne, narz\u0119dzia takie jak MySQL Tuner s\u0105 darem niebios, kt\u00f3ry zas\u0142uguje na bycie w swojej w\u0142asnej kategorii.<\/p>\n<p>Jest to co\u015b, z czego mog\u0105 korzysta\u0107 zar\u00f3wno nowicjusze, jak i profesjonali\u015bci. MySQL Tuner nie jest konkretn\u0105 wskaz\u00f3wk\u0105 dla MySQL, wi\u0119c istnieje wiele poprawek i modyfikacji, kt\u00f3re mo\u017cna zastosowa\u0107. Im cz\u0119\u015bciej go u\u017cywasz, tym wi\u0119cej poprawek mo\u017cesz nauczy\u0107 si\u0119 stosowa\u0107 na w\u0142asny u\u017cytek.<\/p>\n<p>Na pierwszy rzut oka mo\u017ce si\u0119 to wydawa\u0107 onie\u015bmielaj\u0105ce, ale w\u0142a\u015bnie dlatego na oficjalnej stronie projektu mo\u017cna znale\u017a\u0107 podr\u0119cznik \u2013man db, a tak\u017ce wszystkie notatki, niezb\u0119dn\u0105 lektur\u0119 i ustawienia. Dzi\u0119ki temu MySQL Tuner powinien szybko sta\u0107 si\u0119 Twoim podstawowym narz\u0119dziem do przyspieszania MySQL i testowania plik\u00f3w konfiguracyjnych.<\/p>\n<h2><strong>Ko\u0144cowe przemy\u015blenia na temat najlepszych praktyk MySQL<\/strong><\/h2>\n<p>W \u015bwiecie informatyki MySQL jest niew\u0105tpliwie jednym z najwa\u017cniejszych i najbardziej wp\u0142ywowych program\u00f3w, jakie kiedykolwiek si\u0119 pojawi\u0142y. Jest tak zaanga\u017cowana i wszechstronna, \u017ce \u200b\u200bgdy tylko wygl\u0105da na to, \u017ce wszystkie mo\u017cliwe sztuczki i skr\u00f3ty zosta\u0142y odkryte, kto\u015b inny wtr\u0105ca si\u0119 z nowym sposobem wykorzystania nowej argumentacji lub ustawienia.<\/p>\n<p>Przedstawili\u015bmy tylko najlepsze praktyki MySQL, kt\u00f3re ka\u017cdy powinien zna\u0107. Ale im cz\u0119\u015bciej u\u017cywasz MySQL, tym cz\u0119\u015bciej b\u0119dziesz ich u\u017cywa\u0107. Mo\u017cesz \u0107wiczy\u0107 SQL online i ustawia\u0107 sobie testy SQL. Nast\u0119pnie opracujesz w\u0142asne sztuczki i znajdziesz w\u0142asne najwa\u017cniejsze wskaz\u00f3wki, na kt\u00f3rych mo\u017cesz polega\u0107, takie jak limit SQL, numer wiersza SQL i zrozumiesz, dlaczego powiniene\u015b wybra\u0107 MySQL w pierwszej kolejno\u015bci.<\/p>\n<p>Je\u015bli podoba\u0142 Ci si\u0119 ten artyku\u0142 o najlepszych praktykach MySQL, powiniene\u015b r\u00f3wnie\u017c przeczyta\u0107 te:<\/p>\n<ul>\n<li><a href=\"https:\/\/wpdatatables.com\/wordpress-lightbox-plugins-you-should-know-of\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Wtyczki WordPress lightbox, o kt\u00f3rych powiniene\u015b wiedzie\u0107<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/opcje-wtyczki-migracji-do-wordpressa-aby-przeniesc-swoja-witryne\/\" title=\"Opcje wtyczki migracji do WordPressa, aby przenie\u015b\u0107 swoj\u0105 witryn\u0119\">Opcje wtyczki migracji do WordPressa, aby przenie\u015b\u0107 swoj\u0105 witryn\u0119<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/jak-dodac-instagram-do-wordpressa\/\" title=\"Kt\u00f3ra z tych opcji wtyczki WordPress Instagram jest dla Ciebie najlepsza?\">Kt\u00f3ra z tych opcji wtyczki WordPress Instagram jest dla Ciebie najlepsza?<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wpdatatables.com\" class=\"external external_icon\">wpdatatables.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule przedstawiono niekt\u00f3re z najlepszych praktyk MySQL. Dzi\u0119ki nim mo\u017cesz \u0107wiczy\u0107 SQL i ustawi\u0107 sobie kilka \u0107wicze\u0144 SQL. Zakopa\u0107!<\/p>\n","protected":false},"author":1,"featured_media":206971,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,836,845,866],"tags":[1169],"class_list":["post-225947","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-przewodnik-dla-poczatkujacych","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/225947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=225947"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/225947\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/206971"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=225947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=225947"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=225947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}