<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Duomenų bazių serveriai — Dedikuoti.lt</title>
        <link>https://forumas.dedikuoti.lt/</link>
        <pubDate>Thu, 12 Mar 2026 11:32:42 +0000</pubDate>
        <language>lt</language>
           <description>Duomenų bazių serveriai — Dedikuoti.lt</description>
   <language>lt</language>
   <atom:link href="https://forumas.dedikuoti.lt/categories/duomenu-baziu-serveriai/feed.rss" rel="self" type="application/rss+xml" />
   <item>
      <title>MySQL duomenų kešavimas Ubuntu 20.04 serveryje naudojant Redis ir PHP</title>
      <link>https://forumas.dedikuoti.lt/discussion/915/mysql-duomenu-kesavimas-ubuntu-20-04-serveryje-naudojant-redis-ir-php</link>
      <pubDate>Mon, 24 May 2021 06:44:12 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">915@/discussions</guid>
      <description><![CDATA[<p><img src="https://forumas.dedikuoti.lt/uploads/editor/qa/hxfltlpcxrt6.png" alt="" title="" /></p>

<p><strong>Redis</strong> (<strong>Re</strong>mote <strong>Di</strong>ctionary <strong>S</strong>erver) yra atvirojo kodo duomenų bazė, kuri naudoja papildomą atmintį ir rakto reikšmes greitesniam duomenų pateikimui. Redis yra idealus pasirinkimas, jeigu turite poreikį į greitį orientuotai sistemai. Kadangi duomenys laikomi RAM atmintyje, tai sumažina laiką, reikalingą pasiekti duomenis diske. Redis palaiko tokius duomenų tipus, kaip string'us, hash'us, sąrašus, set'us ir pan.</p>

<p>Šioje pamokoje pateiksime instrukciją, kaip naudoti duomenų kešavimą Ubuntu 20.04 serveryje pasitelkiant Redis serverį su PHP.<br />
<br /></p>

<h2>0. Preliminarūs reikalavimai:</h2>

<ul>
<li>Mūsų parengtas Ubuntu 20.04 serveris</li>
<li><a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/802/pradiniai-serverio-nustatymai-ubuntu-18-04-aplinkoje" title="Naudotojas">Naudotojas</a> turintis sudo teises</li>
<li><a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/895/apache-mariadb-ir-php-lamp-diegimas-ubuntu-20-04-lts&quot;LAMP&quot;">LAMP</a> tarnybų paketas<br />
<br /></li>
</ul>

<h2>1. Redis serverio diegimas ir minimalus konfigūravimas</h2>

<p>Prieš pradedant diegimą atnaujinkite serverio paketus ir įdiekite Redis:</p>

<p><code>sudo apt update</code><br />
<code>sudo apt install redis-server</code></p>

<p>Toliau atsidarykite Redis konfigūracijos failą su norimu teksto redaktoriumi (mes naudojame nano):</p>

<p><code>sudo nano /etc/redis/redis.conf</code></p>

<p>Šiame faile susiraskite eilutę su <strong>supervised</strong> ir reikšmę <strong>no</strong> pakeiskite į <strong>systemd</strong>. Šis pakeitimas leis Redis serverį administruoti kaip tarnybą suteikiant daugiau galimybių lengvai administruoti atliekamas operacijas:</p>

<blockquote><div>
  <p>. . .</p>
  
  <p># If you run Redis from upstart or systemd, Redis can interact with your<br />
    # supervision tree. Options:<br />
    #   supervised no      - no supervision interaction<br />
    #   supervised upstart - signal upstart by putting Redis into SIGSTOP mode<br />
    #   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET<br />
    #   supervised auto    - detect upstart or systemd method based on<br />
    #                        UPSTART_JOB or NOTIFY_SOCKET environment variables<br />
    # Note: these supervision methods only signal "process is ready."<br />
    #       They do not enable continuous liveness pings back to your supervisor.<br />
    supervised systemd</p>
  
  <p>. . .</p>
</div></blockquote>

<p>Atlikus koregavimus išsaugokite juos ir perkraukite Redis tam, kad pakeitimai įsigaliotų:</p>

<p><code>sudo systemctl restart redis.service</code></p>

<p>Ir patikrinkite ar Redis veikia sėkmingai:</p>

<p><code>sudo systemctl status redis</code></p>

<p><br /></p>

<h2>2. Redis papildinio diegimas</h2>

<p>Kešavimo veikimui reikalingas <em>php-redis</em> paketas, kuris įdiegiamas paleidus šią komandą:</p>

<p><code>sudo apt install -y php-redis</code></p>

<p>Užbaigus diegimą perkraukite Apache:</p>

<p><code>sudo systemctl restart apache2</code></p>

<p><br /></p>

<h2>3. Duomenų bazės kūrimas</h2>

<p>Prisijunkite prie duomenų bazių serverio:</p>

<p><code>sudo mysql -u root -p</code></p>

<p>ir įveskite savo prisijungimo slaptažodį. Tada sukuriame naują duomenų bazę:</p>

<p><code>CREATE DATABASE imones_db;</code></p>

<p>Duomenų bazei sukuriame naudotoją ir suteikiame jam visas teises valdyti ją:</p>

<p><code>CREATE USER 'naudotojas'@'localhost' IDENTIFIED BY 'StiprusSlaptazodis';</code><br />
<code>GRANT ALL PRIVILEGES ON imones_db.* TO 'naudotojas'@'localhost';</code><br />
<code>FLUSH PRIVILEGES;</code></p>

<p>Tada pasirinkite savo duomenų bazę:</p>

<p><code>USE imones_db;</code></p>

<p>Sukurkite <strong>darbuotojai</strong> lentelę. Ši lentelė bus naudojama laikyti standartiniams darbuotojų duomenims, kaip ID, vardas ir pavardė:</p>

<p><code>CREATE TABLE darbuotojai (darbuotojo_id INT AUTO_INCREMENT PRIMARY KEY, vardas VARCHAR(50), pavarde VARCHAR(50) );</code></p>

<p>Įveskite kelių galimų darbuotojų duomenis. Nenaudokite <em>darbuotojo_id</em> duomens, nes jis aprašytas kaip <em>AUTO_INCREMENT</em> reikšmė:</p>

<p><code>INSERT INTO darbuotojai (vardas, pavarde) VALUES ('PETRAS', 'PETRAITIS');</code><br />
<code>INSERT INTO darbuotojai (vardas, pavarde) VALUES ('JONAS', 'JONAITIS');</code><br />
<code>INSERT INTO darbuotojai (vardas, pavarde) VALUES ('VARDAS', 'PAVARDE');</code><br />
<code>INSERT INTO darbuotojai (vardas, pavarde) VALUES ('VARDENIS', 'PAVARDENIS');</code></p>

<p>Paleiskite <em>darbuotojai</em> užklausą, kuri turi pateikti įvestus duomenis:</p>

<p><code>SELECT darbuotojo_id, vardas, pavarde from darbuotojai;</code></p>

<p>Ir sutikrinkite ar visi įvesti darbuotojai yra matomi lentelėje:</p>

<p><img src="https://forumas.dedikuoti.lt/uploads/editor/ve/4aoab3mbkvjs.png" alt="" title="" /></p>

<p><br /></p>

<h2>4. PHP skripto sukūrimas</h2>

<p>Sukuriame PHP skriptą svetainės root direktorijoje. Failas jungsis prie duomenų bazės ir tikrins <em>darbuotojai</em> lentelę. Sukurkite naują failą:</p>

<p><code>sudo nano /var/www/html/darbuotojai.php</code></p>

<p>ir įkelkite PHP skriptą. Svarbu, kad sutikrintumėte visus kintamiuosius, kurie skirsis jūsų kuriamoje duomenų bazėje. Skriptą rasite atskirame faile <strong>darbuotojai.php</strong>, kuris prisegtas žemiau po įrašu.</p>

<p>Paaiškiname kelias esmines skripto dalis:</p>

<pre><code>$redis = new Redis(); 
$redis-&gt;connect('127.0.0.1', 6379);
</code></pre>

<p>Šios dvi eilutės prijungia Redis serverį ir inicijuoja $redis kintamąjį skripte pateikiant užklausą į Redis serverį.</p>

<pre><code>$sql = 'select
    darbuotojo_id,
    vardas,
    pavarde                                 
    from darbuotojai
    ';
$cache_key = md5($sql);
</code></pre>

<p>Kintamasis <strong>$sql</strong> atlieka SQL komandą, kuri pasiima įrašus iš duomenų bazės. Redis serveris naudoja <strong>$cache_key</strong> kintamąjį saugoti duomenis susietus su raktu. Šis skriptas naudoja <strong>md5</strong> šifravimo algoritmą SQL komandoje tam, kad būtų sutrumpinamas raktas ir galimos problemos paeiškos būtų lengvesnės.</p>

<pre><code>if ($redis-&gt;exists($cache_key)) {
$data_source = &quot;Data from Redis Server&quot;;
$data = unserialize($redis-&gt;get($cache_key));
...

} else { 

 $data_source = 'Data from MySQL Database'; 

...     

 $redis-&gt;set($cache_key, serialize($data)); 
 $redis-&gt;expire($cache_key, 10);        

}
</code></pre>

<p>Aukščiau pateiktas kodas tikrina, ar Redis serveryje yra raktas <strong>$cache_key</strong>. Jei raktas yra,  skriptas iš naujo nebetikrina duomenų ir papildomai nebeįrašo duomenų į <strong>$data</strong> kintamąjį. Jei Redis serveryje nėra <strong>$cache_key</strong> rakto, kodas nuskaito duomenis iš MySQL duomenų bazės iš naujo ir talpina juos naudodamas komandą <strong>$redis-&gt; set</strong>.</p>

<p>Komanda <strong>$redis-&gt; expire</strong> nustato galiojimo laiką sekundėmis, kurį raktas išlaiko atmintyje prieš jį ištrinant. Duomenų galiojimo laikas yra 10 sekundžių. Galite pakeisti šią vertę, kad atitiktų jūsų poreikius.</p>

<p><br /></p>

<h2>5. Redis kešavimo patikrinimas</h2>

<p>Apsilankykite adresu:</p>

<p><code>http://jūsų_ip_adresas/darbuotojai.php</code></p>

<p>ir matysite duomenis, kurie bus užkraunami iš duomenų bazės:</p>

<p><img src="https://forumas.dedikuoti.lt/uploads/editor/nt/9w6ofuwk6tzn.png" alt="" title="" /></p>

<p>Perkraukite puslapį ir jums bus pateikti kešuoti PHP duomenys iš Redis serverio:</p>

<p><img src="https://forumas.dedikuoti.lt/uploads/editor/a8/jxqyz1yrbyeo.png" alt="" title="" /></p>

<p>Ankstesnė išvestis patvirtina, kad PHP skriptas veikia taip, kaip tikėtasi, ir duomenys teikiami iš greitos atminties talpyklos Redis serveryje. Tai sumažina duomenų nuskaitymo iš disko paieškos laiką. Taip pat galite pabandyti atnaujinti puslapį po 10 sekundžių, kad būtų panaikinamas kešavimas.</p>

<p>Pasitelkiant šį kešavimo būdą galite pagreitinti tam tikrų svetainės dalių ar aplikacijų užkrovimą ir pagerinti svetainės greitaveiką.</p>
]]></description>
   </item>
   <item>
      <title>Duomenų bazės importavimas bei eksportavimas naudojant MySQL/MariaDB</title>
      <link>https://forumas.dedikuoti.lt/discussion/905/duomenu-bazes-importavimas-bei-eksportavimas-naudojant-mysql-mariadb</link>
      <pubDate>Tue, 06 Apr 2021 12:51:19 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">905@/discussions</guid>
      <description><![CDATA[<p><img src="https://forumas.dedikuoti.lt/uploads/editor/p1/2gpa5dmvtppj.png" alt="" title="" /></p>

<p>Duomenų bazių migravimas veiksmas atliekamas norint migruoti svetaines tarp skirtingų serverių. Šis veiksmas taip pat labai aktualus vykdant programinės įrangos kūrimą, kai reikia perkelti duomenis į kitą aplinką. Ne visada migravimas tarp sistemų atliekamas sklandžiai, todėl parengėme instrukciją, kaip tai atlikti paprastai ir greitai.</p>

<p>Šioje instrukcijoje bus naudojamos komandos veikiančios tiek MySQL tiek MariaDB duomenų bazėse. Instrukcija tinkama visoms Linux operacinėms sistemoms.</p>

<p><br /></p>

<h2>0. Preliminarūs reikalavimai:</h2>

<ul>
<li>Linux virtualiai dedikuotas serveris;</li>
<li><a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/802/pradiniai-serverio-nustatymai-ubuntu-18-04-aplinkoje" title="Papildomas naudotojas">Papildomas naudotojas</a> turintis <em>sudo</em> teises;</li>
<li>Įdiegta <a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/740/lamp-diegimas-ubuntu-debian-aplinkoje" title="MySQL">MySQL</a> arba <a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/895/apache-mariadb-ir-php-lamp-diegimas-ubuntu-20-04-lts" title="MariaDB">MariaDB</a> duomenų bazių valdymo sistema;</li>
<li>Duomenų bazė esanti serveryje.</li>
</ul>

<p><br /></p>

<h2>1. Duomenų bazės eksportavimas</h2>

<p>Duomenų bazių ekportavimui į SQL tekstinį failą gali būti naudojama mysqldump komandą. Tai palengviną duomenų bazių migravimą. Šiam veiksmui atlikti turite naudoti duomanų bazių naudotojo, kuris turi bent duomenų bazės skaitymo teises.</p>

<p><br /><br />
 Duomenų bazių eksportavimui naudojame šią komandą:<br />
<code>mysqldump -u naudotojas -p db_pavadinimas &gt; duomenys.sql</code></p>

<ul>
<li><strong>nautodojas</strong> - naudotojo vardas su kuriuo galite prisijungti prie duomenų bazių;</li>
<li><strong>db_pavadinimas</strong> - eksportuojamos duomenų bazės pavadinimas;</li>
<li><strong>duomenys.sql</strong> - duomenų bazės failo pavadinimas, kuriame bus išsaugomi DB duomenys tekstiniu formatu.</li>
</ul>

<p><br /><br />
Komanda nepateiks jokio atsakymo, tačiau galite patikrinti ar failas buvo sėkmingai sukurtas su komanda:<br />
<code>head -n 5 data-dump.sql</code></p>

<p><br /><br />
Failo viršus turi būti panašus į šį, nurodant duomenų bazės pavadinimą:</p>

<blockquote><div>
  <p>-- MySQL dump 10.13  Distrib 5.7.16, for Linux (x86_64)<br />
  -- Host: localhost    Database: database_name</p>
  
  <hr />
  
  <p>-- Server version       5.7.16-0ubuntu0.16.04.1</p>
</div></blockquote>

<p><br /><br />
Jeigu vis dėlto bus susiduriama su problemomis eksportuojant duomenis, Jums bus pateikiama klaida nurodanti priežastis.</p>

<p><br /></p>

<h2>2. Duomenų bazės inportavimas</h2>

<p>Tam, kad galėtumėte atlikti duomenų bazės importavimą visą pirmą reikia susikurti tuščią duomenų bazę. Prisijungiame prie mySQL tarnybos su <em>root</em> teisėmis:<br />
<code>mysql -u root -p</code><br />
<br /><br />
Prisijungę prie sukurkite naują DB įvykdydami šią komandą:<br />
<code>CREATE DATABASE nauja_db;</code><br />
<br /><br />
Bus pateikiamas atsakymas nurodantis, kad DB buvo sukurta sėkmingai:</p>

<blockquote><div>
  <p>Query OK, 1 row affected (0.00 sec)</p>
</div></blockquote>

<p><br /><br />
Tada atsijunkite iš MySQL paspausdami <strong>CTRL+D</strong>. Komandinėje eilutėje galite importuoti duomenų bazės failą naudodami šią komandą:<br />
 'mysql -u username -p nauja_db &lt; duomenu_kopija.sql'</p>

<ul>
<li><strong>nautodojas</strong> - naudotojo vardas su kuriuo galite prisijungti prie duomenų bazių;</li>
<li><strong>nauja_db</strong> - naujos duomenų bazės pavadinimas;</li>
<li><strong>duomenu_kopija.sql</strong> - duomenų bazės failo kopija.<br />
<br /><br />
Jeigu perkėlimas atliktas sėkmingai, nebus patiekiamas papildomas atsakymas. Jeigu vis dėlto bus susiduriama su problemomis eksportuojant duomenis, Jums bus pateikiama klaida nurodanti priežastis. Norint patikrinti importavimą, prisijunkite prie MySQL ir paleiskite komandą <em>USE nauja_db</em>, o tada <em>SHOW TABLES</em>. Jums bus pateikiamos duomenų bazės lentelės.<br />
<br /><br />
<strong>mysqldump</strong> turi ir daugiau papildomų nustatymų su kuriais galite įvykdyti ir daugiau veiklų su DB kopijomis. Daugiau informacijos apie šios komandos naudojimą rasite šiuo adresu:</li>
</ul>

<p><a href="https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html" rel="nofollow">https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html</a></p>
]]></description>
   </item>
   <item>
      <title>SQLite3 naujausios versijos diegimas</title>
      <link>https://forumas.dedikuoti.lt/discussion/893/sqlite3-naujausios-versijos-diegimas</link>
      <pubDate>Fri, 22 Jan 2021 12:50:25 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">893@/discussions</guid>
      <description><![CDATA[<div><b></b><img alt="sqlite-diegimas" src="https://forumas.dedikuoti.lt/uploads/editor/jf/q3ak19oafm3c.png" title="Image: https://forumas.dedikuoti.lt/uploads/editor/jf/q3ak19oafm3c.png" width="741" height="351" /></div><div><b>SQLite</b> yra plačiausiai naudojamas duomenų bazių variklis visame pasaulyje, o klientų bibliotekos yra prieinamos beveik visoms populiariausoms kalboms. Dauguma <b>Linux</b> distribucijų gali įdiegti SQLite3 iš savo repozitorijų. Tačiau repozitorijos versija gali būti pasenusi bei joje gali nebūti naujausių SQLite3 versijų. Šioje pamokoje įdiegsime naujausią SQLite3 versiją iš oficialaus kūrėjų puslapio.</div><div>Pamoka buvo parenga naudojant Ubuntu 20.04 versiją, tačiau tinkama ir kitokioms Linux distribucijoms.</div><div><br /></div><h2><b>0. Preliminarūs reikalavimai</b></h2><div>* Įdiegtas mūsų parengtas Linux distribucijos serverio šablonas.</div><div><br /></div><h2><b>1. Serverio paruošimas diegimui</b><br /></h2><div>Prieš pradedant diegti SQLite3 duomenų bazių valdymo programą, turite atlikti kelis papildomus veiksmus. Atnaujinkite sistemą ir įrašykite <i>build-essential</i> paketą:</div><div><br /></div><div><b>Ubuntu</b> ir <b>Debian</b> sistemose:</div><div><pre><code>apt-get update <br /></code><code>apt-get install build-essential</code><br /><code></code></pre><b>CentOS</b> ir <b>RHEL</b> sistemos:<br /><pre><code>yum update
yum groupinstall "Development Tools"</code></pre></div><div><b>Fedora</b> sistemoje:</div><div><pre><code>dnf update
dnf groupinstall "Development Tools"</code></pre></div><div><br /></div><h2><b>2. SQLite3 paketo atsisiuntimas</b></h2><div>Naujausią SQLite3 versiją galite rasti&nbsp; <a rel="nofollow" href="https://www.sqlite.org/download.html">šiuo adresu</a>. Nusikopijuokite <i>.tar.gz</i> failo nuorodą iš <b>Source Code</b> skilties. Toliau įvykdykite šias komandas:</div><div><pre><code></code><code>cd ~
mkdir sqlite3 &amp;&amp; cd sqlite3
wget [nuoroda į failą sqlite-autoconf-&lt;versija&gt;.tar.gz]
tar xvfz sqlite-autoconf-&lt;versija&gt;.tar.gz</code></pre><br /></div><h2><b>3. SQLite sistemos diegimas ir konfigūravimas</b></h2><div>Šiam veiksmui atlikti paleiskite šias komandas terminale:</div><div><pre><code></code><code>cd sqlite-autoconf-&lt;versija&gt;
./configure
make
sudo make install</code></pre><br /></div><h2><b>4. Versijos patikrinimas</b></h2><div>Atlikus diegimą galite patikrinti ar diegimas buvo sėkmingas, bei pamatyti įdiegtą versiją su šia komanda:</div><div><pre><code>sqlite3 --version
</code></pre></div><div>Sužinoti daugiau abie <b>SQLite3 Amalgamation</b> galite šiuo adresu: <a href="https://www.sqlite.org/amalgamation.html" rel="nofollow">https://www.sqlite.org/amalgamation.html</a></div><div>Bei papildomus pastebėjimus apie kompiliavimą: <a href="https://www.sqlite.org/howtocompile.html" rel="nofollow">https://www.sqlite.org/howtocompile.html</a><br /></div><br /><br /><br /><br />]]></description>
   </item>
   <item>
      <title>MySQL ir MariaDB užklausų bei lentelių optimizavimas</title>
      <link>https://forumas.dedikuoti.lt/discussion/839/mysql-ir-mariadb-uzklausu-bei-lenteliu-optimizavimas</link>
      <pubDate>Tue, 26 Nov 2019 14:29:07 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">839@/discussions</guid>
      <description><![CDATA[<div><b>MariaDB</b> bei <b>MySQL</b> yra vienos populiariausių duomenų bazių valdymo sistemų naudojančių <b>SQL</b> kalbą duomenų įvedimui bei išvedimui (rezultatų pateikimui).&nbsp; Nors SQL užklausos yra paprastos komandos, kurias nesunku išmokti, tačiau nevisos užklausos ir duomenų bazės funkcijos atlieka veiksmus taip pat efektyviai. Tai tampa ypač svarbu kai informacijos kiekis duomenų bazėje didėja ir tai pradeda stabdyti svetainės greitį augant lankytojų skaičiui.</div><div><br /></div><div>Šioje pamokoje bus aptariamos kelios paprastos&nbsp; priemonės, kurių galima imtis norint pagreitinti MySQL ir MariaDB užklausas. Testavimams atlikti rekomenduojame naudoti virtuliai dedikuotą serverį, kuriame jau esate įdiegę MySQL arba MariaDB tarnybą. Kaip tai alikti, rasite šioje pamokose: <a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/740/lamp-diegimas-ubuntu-debian-aplinkoje#latest">Ubuntu/Debian</a>, <a rel="nofollow" href="https://forumas.dedikuoti.lt/discussion/715/lamp-diegimas-centos-7-aplinkoje#latesthttp://">CentOS 7.</a></div><div><br /></div><div><br /></div><div><div><div><h2>Lentelių dizaino bendrosios ypatybės</h2></div></div></div><div>Vienas iš pamatinių būdų pagerinti užklausų greitį taikomas pačių lentelių struktūros dizainui. Todėl tai reiškia, kad efektyviausia pradėti optimizuoti duomenis dar prieš pradedant naudoti duomenų bazes. Todėl pateikiame kelis klausimus į kuriuos turite atsakyti sau prieš pradedant kurti duomenų bazių lenteles:</div><div><br /></div><div><b>Kaip iš esmės bus naudojamos lentelės?</b></div><div><i><br /></i></div><div>Nustatymas kaip lentelių duomenys bus naudojami dažniausiai nurodo kelią link geriausio metodo modeliuojant duomenų struktūras. Jei tam tikrus duomenis atnaujinsite dažnai, geriausia, kad jie būtų atskiroje lentelėje. To neatlikus gali sukelti užklausų kešavimą, kuris bus pašalinamas ir cėl atstatomas pakartotinai dėlto, kad bus pastebime jog aptinkama nauja informacija. Jei tai atsitiks atskiroje lentelėje, kiti stulpeliai gali ir toliau naudotis kešavimo privalumais. <br /></div><div><br /></div><div>Paprastai mažesnių lentelių operacijų atnaujinimas yra greitesnis būdas. Išsami sudėtingų duomenų analizė paprastai yra užduotis, geriausiai pritaikoma didelėms lentelėms, nes prijungimas gali būti pakankamai brangi operacija.</div><div><br /></div><div><b>Kokie duomenų tipai yra reikalingi?</b></div><div><br />Kartais galite sutaupyti daug laiko ilgainiui, jei iš anksto nustatote tam tikrus duomenų dydžių apribojimus. Pavyzdžiui, jei yra ribojamas galimų įrašų skaičius konkrečiame laukelyje, kuriame nurodomos eilutės reikšmės, vietoj „varchar“ galite naudoti „enum“ tipą. Šis duomenų tipas yra kompaktiškenis ir todėl užklausa greičiau apdorojama. Tam, kad būtų aiškiau pateikiame papildomą pavyzdį šiao situacijai - jei turite tik keletą skirtingų tipų vartotojų, galite sukurti stulpelį, kuriame naudojamas „enum“ duomenų tipas su galimomis reikšmėmis: administratorius, moderatorius, vartotojas.</div><div><br /></div><div><b>Kurį stulpelį naudosite užklausų generavimui?</b><br /></div><div><br /></div><div>Iš anksto žinant, kurie laukeliai gaus užklausas pakartotinai, gali žymiai pagerinti jūsų duomenų bazės greitį.&nbsp; Stulpelių indeksavimas, kuriuos tikitės naudoti paieškai, labai padeda šioje situacijoje. Kurdami lentelę galite pridėti rodyklę naudodami šią sintaksę:</div><div><br /></div><div><pre>CREATE TABLE example_table (
    id INTEGER NOT NULL AUTO_INCREMENT,
    name VARCHAR(50),
    address VARCHAR(150),
    username VARCHAR(16),
    PRIMARY KEY (id),
    INDEX (username)
);</pre></div><div><br /></div><div>Tai bus naudinga, jeigu žinome, kad naudotojai ieškos informcijos pagal naudotojo vardą:</div><pre>explain example_table;</pre><pre>+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| name     | varchar(50)  | YES  |     | NULL    |                |
| address  | varchar(150) | YES  |     | NULL    |                |
| username | varchar(16)  | YES  | MUL | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)</pre><div>Kaip matote, turimte du indikatorius mūsų lentelei. Pirmasis yra pagrindinis raktas, kuris šiuo atveju yra <b>id</b> laukas. Antrasis yra rodyklė, kurią mes įtraukėme į <b>username</b> lauką. Tai pagerins užklausas, kuriose naudojamas šis laukas.</div><div><br /></div><div><br />Nors konceptualiu požiūriu yra naudinga galvoti apie tai, kurie laukai turėtų būti indeksuojami kuriant, lygiai taip pat paprasta pridėti indeksus prie jau esamų lentelių. Pavyzdžiui galite pridėti tokį:</div><div><pre>CREATE INDEX index_name ON table_name(column_name);</pre></div><div><br /></div><div>Kitas būdas įvykdyti tą patį yra šis:<br /></div><div><pre>ALTER TABLE table_name ADD INDEX ( column_name );</pre></div><div><br /></div><div><b><b>U</b></b><b><b>žklausose</b> naudokite paaiškinimus, jei norite rasti taškus iki indekso</b><br /></div><br />Jei jūsų programa teikia užklausas labai nuspėjamu keliu, turėtumėte išanalizuoti savo užklausas, kad įsitikintumėte, jog užklausos naudoja indeksus visose įmanomose vietose. Tai lengva naudojant <b>explain</b> funkciją<br /><br /><div>Tam, kad pamtytume kaip tai veikia, importuojame MySQL duomenų bazės pavyzdį:</div><div><pre><code>wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2
tar xjvf employees_db-full-1.0.6.tar.bz2
cd employees_db
mysql -u root -p -t &lt; employees.sql</code></pre></div><div><br /></div><div>Prisijungiame atgal į MySQL tam, kad galėtume paleisti kelias užklausas:</div><div><pre><code>mysql -u root -p
use employees;</code></pre></div><div><br /></div><div>Pirmiausia turime nurodyti, kad MySQL neturėtų naudoti kešavimo tam, kad galėtume tiksliai įvertinti, koks laikas reikalingas šių užduočių įvykdymui:<br /><pre><code>SET GLOBAL query_cache_size = 0;
SHOW VARIABLES LIKE "query_cache_size";

+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| query_cache_size | 0     |
+------------------+-------+
1 row in set (0.00 sec)</code></pre></div><div><br /></div><div>Dabar galime vykdyti paprastą užklausą dideliame duomenų rinkinyje:</div><pre><code>SELECT COUNT(*) FROM salaries WHERE salary BETWEEN 60000 AND 70000;</code></pre><pre><code>+----------+
| count(*) |
+----------+
|   588322 |
+----------+
1 row in set (0.60 sec)
</code></pre><div><br /></div><div>Norėdami pamatyti, kaip MySQL vykdo užklausą, prieš pridėdami užklausą galite pridėti <b>explain</b> raktinį žodį į pačią užklausą:<br /><pre><code>EXPLAIN SELECT COUNT(*) FROM salaries WHERE salary BETWEEN 60000 AND 70000;</code></pre></div><div><pre><code>+----+-------------+----------+------+---------------+------+---------+------+---------+-------------+
| id | select_type | table    | type | possible_keys | key  | key_len | ref  | rows    | Extra       |
+----+-------------+----------+------+---------------+------+---------+------+---------+-------------+
|  1 | SIMPLE      | salaries | ALL  | NULL          | NULL | NULL    | NULL | 2844738 | Using where |
+----+-------------+----------+------+---------------+------+---------+------+---------+-------------+
1 row in set (0.00 sec)
</code></pre></div><br />Pažvelgę į <b>key</b> lauką pamatysite, kad jo reikšmė yra <b>NULL</b>. Tai reiškia, kad šiai užklausai nenaudojamas nė vienas indeksas.<br /><br />Pridėkime vieną indeksą ir paleiskite užklausą dar kartą, kad patikrintume, ar ji ją paspartina:<br /><pre><code>ALTER TABLE salaries ADD INDEX ( salary );
SELECT COUNT(*) FROM salaries WHERE salary BETWEEN 60000 AND 70000;</code></pre><pre><code>+----------+
| count(*) |
+----------+
|   588322 |
+----------+
1 row in set (0.14 sec)
</code></pre><div><br /></div><div>Kaip matote, tai žymiai pagerina užklausų našumą. Kita bendra taisyklė, kurią reikia naudoti su indeksais - atkreipti dėmesį į lentelių prijungimus. Turėtumėte sukurti indeksus ir nurodyti tą patį duomenų tipą visuose stulpeliuose, kurie bus naudojami sujungiant lenteles.<br /><br />Pvz., Jei turite lentelę pavadinimu „cheeses“ ir lentelę pavadinimu „ingredients“, galite prijungti prie panašaus kiekvienos lentelės <b>ingredient_ID</b> lauko, kuris galėtų būti <b>INT</b>. Tada galėtume sukurti abiejų šių sričių indeksus ir mūsų prijungimas paspartėtų.</div><br /><h2>Užklausų optimizavimas greičiui</h2>Kita galima lygties pusė, bandant pagreitinti užklausas, yra pačių užklausų optimizavimas. Kai kurios operacijos yra skaičiuojamos intensyviau už kitas. Dažnai yra keli būdai, kaip pasiekti šį rezultatą, kai kuriais atvejais pavyks išvengti ilgai trunkančių operacijų. Atsižvelgiant į tai, kam naudojate užklausos rezultatus, kai kuriais atvejais gali reikėti tik riboto rezultatų skaičiaus. Pavyzdžiui, jei jums reikia tik išsiaiškinti, ar įmonėje yra kas nors, kas uždirba mažiau nei 12 000€, galite naudoti:<br /><pre><code>SELECT * FROM SALARIES WHERE salary &lt; 40000 LIMIT 1;</code></pre>

<pre><code>+--------+--------+------------+------------+
| emp_no | salary | from_date  | to_date    |
+--------+--------+------------+------------+
|  10022 |  11950 | 2000-09-02 | 2001-09-02 |
+--------+--------+------------+------------+
1 row in set (0.00 sec)
</code></pre><br />Ši užklausa vykdoma ypač greitai, nes iš esmės trumpuoju apėjimu pasiekiamas pirmasis teigiamas rezultatas.<br /><br />Jei jūsų užklausose naudojami palyginimai „or“, o abi komponentų dalys testuoja skirtingus laukus, jūsų užklausa gali būti ilgesnė nei būtina. Pavyzdžiui: jei ieškote darbuotojo, kurio vardas arba pavardė prasideda „Bre“, turėsite ieškoti dviejų atskirų stulpelių.<br /><pre><code>SELECT * FROM employees WHERE last_name like 'Bre%' OR first_name like 'Bre%';<br /></code></pre>Ši operacija gali būti greitesnė, jei vardų ieškosime vienoje užklausoje, o atinkamų pavardžių kitoje, ir tada sujungsime išvestį. Tai galime padaryti su <b>union</b> operatoriumi:<br /><pre><code>SELECT * FROM employees WHERE last_name like 'Bre%' UNION SELECT * FROM employees WHERE first_name like 'Bre%';</code></pre><div><div>Kai kuriais atvejais MySQL automatiškai naudos <i>union</i> operaciją. Aukščiau pateiktas pavyzdys iš tikrųjų yra atvejis, kai „MySQL“ tai padarys automatiškai. Galite pamatyti, ar taip yra, patikrinę, ar rūšiuojama, dar kartą naudodamiesi <b>explain</b>.</div></div><br /><h2>Apibendrinimas</h2>Yra nepaprastai daug būdų, kaip galite patobulinti MySQL ir MariaDB lenteles ir duomenų bazes atsižvelgiant į jūsų naudojimo atvejį. Šiame straipsnyje yra tik keli patarimai, kurie gali būti naudingi norint pradėti optimizavimą.<br /><br />Šios duomenų bazių valdymo sistemos turi puikią dokumentaciją, kaip optimizuoti ir suderinti skirtingus scenarijus. Specifikacija labai priklauso nuo to, kokį funkcionalumą norite optimizuoti, nes priešingu atveju jie būtų buvę automatiškai optimizuoti jau įdiegus sistemą. Kai tik patvirtinsite savo reikalavimus ir susipažinsite su operacijomis, kurios bus daromos pakartotinai, galite išmokti patobulinti nustatymus konkrečioms užklausoms.<br /><br /><br /><br /><br /><br /><br />]]></description>
   </item>
   <item>
      <title>MySQL lėtų užklausų paieška</title>
      <link>https://forumas.dedikuoti.lt/discussion/812/mysql-letu-uzklausu-paieska</link>
      <pubDate>Thu, 14 Mar 2019 13:12:45 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">812@/discussions</guid>
      <description><![CDATA[<img alt="attachmentphpattachmentid433stc1d1552561601" src="https://forumas.dedikuoti.lt/attachment.php?attachmentid=433&amp;stc=1&amp;d=1552561601" title="Image: https://forumas.dedikuoti.lt/attachment.php?attachmentid=433&amp;stc=1&amp;d=1552561601" /><br />
<br />
Naudojantis <b>MySQL</b> duomenų bazėmis galite susidurti su įvairiomis vykdomų užklausų problemomis. Kartais jos pasireikšti tik pradėjus darbą su duomenų bazių duomenimis. Daugumoje duomenų bazių sistemų, įtraukiant, bet neapsiribojant MySQL, užklausos formuluotė turi pasibaigti simboliu ";", kaip pavyzdžiui:<br />

<pre><code>mysql&gt; SHOW * FROM lentelės_pavadinimas;
</code></pre>
<br />
Jeigu nepateiksite ";" simbolio užklausos pabaigoje komandinė eilutė ir toliau leis Jums pildyti užklausos tekstą spaudžiant <i>ENTER</i> iki tol kol nebus nurodytas pageidaujamas simbolis. Todėl užklausoje gali atsirasti nepageidaujamas tekstas.<br />
<br />
Viena iš dažniausiai pasitaikančių problemų susijusių su duomenų bazėmis yra ilgai vykdomos užklausos. Norint sužinoti lėtos užklausos priežastį reikėtų įjungti lėtų užklausų išrašo fiksavimą. Tam atlikti atsidarykite failą <i>mysqld.cnf</i>, kuris yra skirtas konfigūruoti MySQL nustatymus serveryje. Šis failas standartiškai yra saugomas šioje <i>/etc/mysql/mysql.conf.d/</i> direktorijoje. Norint koreguoti šį failą naudokite komandą:<br />

<pre><code>sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
</code></pre>
<br />
Slinkite per failą kol pamatysite nurodytas eilutes:<br />

<pre><code>. . .
#slow_query_log         = 1
#slow_query_log_file    = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
. . .
</code></pre>
<br />
Šios užkomentuotos eilutės suteikia standartinius nustatymus MySQL  lėtų užklausų išrašui. Žemiau aprašome kiekvienos eilutės reikšmes:<br />
<br />
* <i>slow-query-log</i> - reikšmė 1 reiškia, kad lėtų užklausų fiksavimas yra įjungtas.<br />
* <i>slow-query-log-file</i> - šio parametro reikšmėje nurodomas lėtų užklausų saugumo failo kelias. Šiuo atveju jis yra <i>/var/log/mysql-slow.log</i> faile.<br />
* <i>long_query_time</i> - nurodant 2 reikšmę yra nustatoma, kad bus fisuojamos visos užklausos, kurios trunka ilgiau nei 2 sekundes.<br />
* <i>log_queries_not_using_indexes</i> - šis parametras taip pat nurodo, kad būtų saugomos ir visos užklausos, kurios nesiindeksuoja.<br />
<br />
Atkomentuokite kiekvieną eilutę pašalindami grotelių simbolį "#". Šis failas turėtų atrodyti taip:<br />

<pre><code>. . .
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes
. . .
</code></pre>
<b><br />
SVARBU:</b> Jeigu naudojate MySQL 8+ versiją šios eilutės nebus įtrauktos į <i>mysqld.cnf</i> pagal nutylėjimą. Tokiu atveju šias eilutes galite nurodyti failo apačioje:<br />

<pre><code>. . .
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes
</code></pre>
<br />
Įjungus lėtų užklausų išrašą turite išsaugoti ir uždaryti failą. Tada perkraukite MySQL tarnybą:<br />

<pre><code>sudo systemctl restart mysql
</code></pre>
<br />
Atlikus šiuos nustatymus Jūs galite peržiūrėti problemines užklausas peržiūrint lėtų užklausų failą. Galite peržiūrėti išrašą po vieną eilutę naudodami <i>less</i> komandą:<br />

<pre><code>sudo less /var/log/mysql_slow.log
</code></pre>
<br />
Kai surasite užklausą, kuri sukelia problemų, turėtumėte optimizuoti užklausas bei/arba lenteles.<br />
<br />
MySQL papildomai įtraukia EXPLAIN formuluotę, kurioje suteikiama informacija kaip MySQL vykdo užklausas. MySQL <a rel="nofollow" href="https://dev.mysql.com/doc/refman/5.7/en/using-explain.html">dokumentacijoje</a> rasite paaiškinimą kaip naudoti EXPLAIN nekorektiškų užklausų išskyrimui.]]></description>
   </item>
   <item>
      <title>MariaDB versijos atnaujinimas CentOS 7 aplinkoje</title>
      <link>https://forumas.dedikuoti.lt/discussion/752/mariadb-versijos-atnaujinimas-centos-7-aplinkoje</link>
      <pubDate>Thu, 08 Feb 2018 14:24:20 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">752@/discussions</guid>
      <description><![CDATA[<img alt="attachmentphpattachmentid327stc1d1518090762" src="https://forumas.dedikuoti.lt/attachment.php?attachmentid=327&amp;stc=1&amp;d=1518090762" /><br />
<br />
Atliekant standartinį duomenų bazės valdymo sistemos MariaDB diegimą serveryje būna įdiegiama 5.5 versija. Kai kurios sistemos reikalauja aukštesnės versijos nei 5.5, todėl parengėme pamoką, kaip atnaujinti MariaDB versiją.<br />
<br />
Pamoka parengta naudojant virtualiai dedikuotą serverį su įdiegtu CentOS 7 šablonu.<br />
<br />
<br />
<b>0. Preliminarūs reikalavimai</b><br />
<br />
* Virtualiai dedikuotas serveris, naudojantis CentOS7 operacinę sistemą bei MariaDB duomenų bazių valdymo sistemą. Kaip įsidiegti MariaDB rasite kitoje mūsų <a rel="nofollow" href="https://forumas.dedikuoti.lt/showthread.php?t=715">pamokoje</a>.<br />
<br />
<br />
<b>1. Pasiruošimas atnaujinimui:</b><br />
<br />
Visų pirma susikurkite visų duomenų bazių (jeigu jau naudojate duomenų bazes) atsargines kopijas įvykdę komandą:<br />

<pre><code>MYSQL_PWD=jūsų_slaptažodis mysqldump -u jūsų_naudotojo_vardas --all-databases --routines --triggers &gt; /tmp/all-databases.sql
</code></pre>
<br />
Sustabdykite MariaDB tarnybą:<br />

<pre><code>service mariadb stop
</code></pre>
<br />
Ištrinkite visus papildomus paketus, kaip pavyzdžiui <i>mariadb-bench</i>:<br />

<pre><code>rpm -e mariadb-bench
</code></pre>
<br />
Iškelkite duomenų bazių direktoriją į atskirą direktoriją (reikalinga tik tuo atveju, jei jau naudojotės duomenų bazėmis):<br />

<pre><code>cp -a /var/lib/mysql/ /var/lib/mysql_backup
</code></pre>
<br />
<br />
<b>2. MariaDB repozitorijos konfigūravimas:</b><br />
<br />
Visų pirma atsidarykite <a rel="nofollow" href="https://downloads.mariadb.org/mariadb/repositories/#mirror=uab&amp;distro=CentOS&amp;distro_release=centos7-amd64--centos7&amp;version=5.5">adresą</a> ir pasirinkite norimą MariaDB versiją.<br />
<br />
Tada atsidarykite <i>/etc/yum.repos.d/ </i>direktoriją:<br />

<pre><code>cd /etc/yum.repos.d/
</code></pre>
<br />
Ir sukurkite failą <i>MariaDB.repo</i>:<br />

<pre><code>touch MariaDB.repo
</code></pre>
<br />
Naudodami <a rel="nofollow" href="https://forumas.dedikuoti.lt/showthread.php?t=731">nano</a> failų redagavimo įrankį perkelkite MariaDB Foundation matomą failo tekstą (šiuo atveju mes pasirinkome 10.1 versiją):<br />

<pre><code>[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
</code></pre>
<br />
<br /><b>
3. Naujesnės versijos MariaDB diegimas:</b><br />
<br />
Atlikite MariaDB diegimą:<br />

<pre><code>yum install mariadb
</code></pre>
<br />
Startuokite MariaDB:<br />

<pre><code>service mariadb start
</code></pre>
<br />
Sėkmingai atlikus visus veiksmus MariaDB versija bus atnaujinta į 10.1 versiją. Tai galite patikrinti įvykdydami komandą serveryje:<br />

<pre><code>mysql -V
</code></pre>]]></description>
   </item>
   <item>
      <title>OrientDB duomenų bazės diegimas CentOS 7 aplinkoje</title>
      <link>https://forumas.dedikuoti.lt/discussion/742/orientdb-duomenu-bazes-diegimas-centos-7-aplinkoje</link>
      <pubDate>Fri, 24 Nov 2017 14:50:14 +0000</pubDate>
      <dc:creator>iv_vytenisg</dc:creator>
      <guid isPermaLink="false">742@/discussions</guid>
      <description><![CDATA[<img alt="attachmentphpattachmentid307stc1d1511527575" src="https://forumas.dedikuoti.lt/attachment.php?attachmentid=307&amp;stc=1&amp;d=1511527575" title="Image: https://forumas.dedikuoti.lt/attachment.php?attachmentid=307&amp;stc=1&amp;d=1511527575" /><br />
<br />
<b>OrientDB</b> yra multimodulinė NoSQL duomenų bazė palaikanti grafų ir dokumentų duomenų bazes. Tai yra Java paremta programinė įranga galinti veikti bet kurioje operacinėje sistemoje. Žemiau pateikiame kelis pagrindinius OrientDB privalumus:<br />

<ul>
Spartus veikimas (gali būti apdorojama iki 220 000 įrašų per sekundę);</ul>

<ul>
Palaiko</ul>
<i>schema-less</i>, <i>schema-full</i> ir <i>schema-mixed</i> tipus;<br />

<ul>
OrientDB palaido MySQL užklausas bei kalbą.</ul>
<br />
<br /><b>
0. Preliminarūs reikalavimai:</b><br />
<br />
- Virtualiai dedikuotas OpenVZ serveris naudojantis mūsų parengtą CentOS 7 operacinės sistemos šabloną.<br />
<br />
<br /><b>
1. OrientDB paketo parsisiuntimas:</b><br />
<br />
OrientDB naudoja Java kalbą, todėl visų pirma turite įdiegti šią programinę įrangą įvykdydami komandą:<br />

<pre><code>yum install java-1.8.0-openjdk
</code></pre>
<br />
<br />
<b>2. OrientDB paketo parsisiuntimas:</b><br />
<br />
Šioje pamokoje parsisiųsime šiuo metu esančią naujausią OrientDB versiją -2.2.29. Failas bus parsiunčiamas į <i>/opt/</i> katalogą pagal šias komandas:<br />

<pre><code>cd /opt/
wget -O orientdb-community-2.2.29.tar.gz http://orientdb.com/download.php?file=orientdb-community-2.2.29.tar.gz&amp;os=linux
</code></pre>
<br />
Parsisiuntus paketą galite jį išskleisti naudodami komandą:<br />

<pre><code>tar xvzf orientdb-community-2.2.29.tar.gz
</code></pre>
<br />
Ir pakeiskite katalogo pavadinimą į <i>orientdb</i>:<br />

<pre><code>mv orientdb-community-2.2.29/ orientdb
</code></pre>
<br />
<br /><b>
3. OrientDB serviso sukūrimas:</b><br />
<br />
Visų pirma sukuriame naują OrientDB naudotoją:<br />

<pre><code>useradd -r orientdb -s /sbin/nologin
</code></pre>
<br />
Tada nustatykite OrientDB failų savininką:<br />

<pre><code>chown -R orientdb:orientdb /opt/orientdb/
</code></pre>
<br />
Toliau turite pakoreguoti dalį OrientDB konfigūracinių failų (jeigu dar neturite įsirašę Nano teksto redagavimo įrankio, tai galite atlikti pagal <a rel="nofollow" href="https://forumas.dedikuoti.lt/showthread.php?t=731">pamoką</a>):<br />

<pre><code>nano /opt/orientdb/bin/orientdb.sh
</code></pre>
<br />
Ir pakeiskite eilutes <i>ORIENTDB_DIR</i> ir <i>ORIENTDB_USER</i> į šias reikšmes:<br />

<pre><code>ORIENTDB_DIR="/opt/orientdb"
ORIENTDB_USER="orientdb"
</code></pre>
<br />
Išsaugokite ir išeikite iš failo. Tada atidarykite kitą failą:<br />

<pre><code>nano /opt/orientdb/bin/orientdb.service
</code></pre>
<br />
Ir sutikrinkite ar pateikiama informacija atitinka žemiau nurodytą:<br />

<pre><code>#
# Copyright (c) OrientDB LTD (http://orientdb.com/)
#

[Unit]
Description=OrientDB Server
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=orientdb
Group=orientdb
ExecStart=/opt/orientdb/bin/server.sh
</code></pre>
<br />
Tada perkelkite failą į tinkamą vietą serveryje:<br />

<pre><code>mv /opt/orientdb/bin/orientdb.service /etc/systemd/system/
</code></pre>
<br />
Ir perkraukite <i>systemd</i> naudodami komandą:<br />

<pre><code>systemctl daemon-reload
</code></pre>
<br />
Dabar galite paleisti OrientDB ir nustatyti, kad duomenų bazė startuotų kiekvieną kartą perkrovus serverį:<br />

<pre><code>systemctl start orientdb
systemctl enable orientdb
</code></pre>
<br />
<b>4. Testavimas:</b><br />
<br />
Jeigu diegimas buvo atliktas korektiškai, OrientDB bus pasiekama per 2480 prievadą. Tai patikrinti galite įvykdydami komandą:<br />

<pre><code>netstat -ln | grep 2480
</code></pre>
<br />
Taip pat galite atidaryti duomenų bazės valdymo sistemą naršyklėse naudodami adresą:<br />
<br /><code>http://jūsų_serverio_IP_adresas:2480</code><br />
<br />
Ir Jums bus pateikiamas toks langas:<br />
<br />
<img alt="attachmentphpattachmentid306stc1d1511527496" src="https://forumas.dedikuoti.lt/attachment.php?attachmentid=306&amp;stc=1&amp;d=1511527496" title="Image: https://forumas.dedikuoti.lt/attachment.php?attachmentid=306&amp;stc=1&amp;d=1511527496" />]]></description>
   </item>
   <item>
      <title>MySQL duomenų bazių komandų pradmenys</title>
      <link>https://forumas.dedikuoti.lt/discussion/543/mysql-duomenu-baziu-komandu-pradmenys</link>
      <pubDate>Thu, 15 May 2014 16:13:44 +0000</pubDate>
      <dc:creator>IV_VygandasS</dc:creator>
      <guid isPermaLink="false">543@/discussions</guid>
      <description><![CDATA[Šiame informaciniame straipsnyje pateikiame MySQL duomenų bazių esmines valdymo komandas.<br />
<br />
<b>MySQL tarnybos komandos</b><br />
<br />
MySQL serveris įdiegiamas įvykdžius šias komandas:<br />

<ul>
<li>Ubuntu:
<pre><code>sudo apt-get install mysql-server
</code></pre>
</li>
<li>Centos:
<pre><code>sudo yum install mysql-server
</code></pre>
</li>
</ul>
<br />
Paleidimas:
<pre><code>/etc/init.d/mysqld start
</code></pre>
Perkrovimas:
<pre><code>/etc/init.d/mysqld restart
</code></pre>
Sustabdymas:
<pre><code>/etc/init.d/mysqld stop
</code></pre>
Būsenos pateikimas:
<pre><code>/etc/init.d/mysqld status
</code></pre>
Įsidiegus MySQL serverį, prie MySQL komandinės eilutės yra prisijungiama su "<i>root</i>" vartotoju naudojant šią komandą:<br />

<pre><code>mysql -u root -p
</code></pre>
<br />
Vykdant šią komandą vertėtų atkreipti dėmesį, jog prašomas yra <i>MySQL</i> "<i>root</i>" vartotojo slaptažodis, o ne sisteminio "<i>root</i>" vartotojo slaptažodis.<br />
<br />
Prisijungus prie <i>MySQL</i> mes turime galimybę modifikuoti esamas, bei kurti naujas duomenų bazes.<br />
<br />
Pora dalykų kuriuos verta atsiminti:
<ul>
<li>Visos <i>MySQL</i> komandos baigiasi kabliataškio (;) simboliu. Jeigu nėra padedamas kabliataškis komanda nebus vykdoma;</li>
<li>Taip pat nors ir nėra privaloma, tačiau verta paminėti, jog suprantamumo dėlei įprastai <i>MySQL</i> komandos yra rašomos didžiosiomis raidėmis, o duomenų bazės, lentelės, vartotojai ar paprastas tekstas yra rašomas mažosiomis raidėmis. Bendru atveju <i>MySQL</i> komandos bus įvykdytos nepriklausomai ar jas rašant didžiosiomis ar mažosiomis raidėmis.</li>
</ul>
<br />
<b>Duomenų bazių valdymas<br />
</b><br />
Duomenų bazės sukūrimas:<br />
<br />
MySQL laiko duomenis duomenų bazėse, o kiekviena duomenų bazė savyje talpina lenteles.<br />
<br />
Peržiūrėti esamas duomenų bazes galime įvykdžius šią komandą:<br />

<pre><code>SHOW DATABASES;
</code></pre>
Numatomas rezultatas:<br />

<pre><code>+--------------------+
| Database           |
+--------------------+
| information_schema |
| admin_default      |
| mysql              |
| performance_schema |
| roundcube          |
| test_asdasd        |
+--------------------+
6 rows in set (0.00 sec)
</code></pre>
Naują duomenų bazę sukurti galime naudojant šią komandą:<br />

<pre><code>CREATE DATABASE database_name;
</code></pre>
Duomenų bazės pašalinimas:
<pre><code>DROP DATABASE database_name;
</code></pre>
Pasirenkame naujai sukurtą duomenų bazę:
<pre><code>USE database_name;
</code></pre>
Patikrinti pasirinktoje duomenų bazėje esančių lentelių sąrašą galime įvykdžius šią komandą:
<pre><code>SHOW tables; 
</code></pre>
Bandomosios lentelės sukūrimas:
<pre><code>CREATE TABLE potluck (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
name VARCHAR(20),
food VARCHAR(30),
confirmed CHAR(1), 
signup_date DATE);
</code></pre>
Siekiant prisiminti sukurtos lentelės struktūra įvykdome šią komandą:
<pre><code>DESCRIBE potluck;
</code></pre>
Informacijos įterpimas į prieš tai sukurtą lentelę:
<pre><code>INSERT INTO `potluck` (`id`,`name`,`food`,`confirmed`,`signup_date`) VALUES (NULL, "John", "Casserole","Y", '2012-04-11');
</code></pre>
Numatomas rezultatas:
<pre><code>Query OK, 1 row affected (0.00 sec)
</code></pre>
Peržiūrėti pasirinktos lentelės turinį galime įvykdant šią komandą:
<pre><code>SELECT * FROM potluck;
</code></pre>
Informacijos lentelėje atnaujinimas:
<pre><code>UPDATE `potluck` 
SET 
`confirmed` = 'N' 
WHERE `potluck`.`name` ='John';
</code></pre>
Papildomo stulpelio pridėjimas:
<pre><code>ALTER TABLE potluck ADD email VARCHAR(40);
</code></pre>
Siekiant pakeisti pasirinkto stulepio vietą lentelėje vykdome komandą su šia sintakse:
<pre><code>ALTER TABLE potluck ADD email VARCHAR(40) AFTER name; 
</code></pre>
Pageidaujamo stulpelio pašalinimas iš lentelės:
<pre><code>ALTER TABLE potluck DROP email;
</code></pre>
Pageidaujamos eilutės (įrašo) pašalinimas iš lentelės galimas naudojant šią sintaksę:<br />

<pre><code>DELETE from &lt;lentelės_pavadinimas&gt; where &lt;stulpelio_pavadinimas&gt;=[laukelio_turinys];
</code></pre>
Prieš tai naudotam pavyzdžiui pritaikyta komanda:
<pre><code>DELETE from potluck  where name='Sandy';
</code></pre>
<br />
<b>Duomenų bazių vartotojų valdymas</b><br />
<br />
Naujo vartotojo sukūrimas:<br />

<pre><code>CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
</code></pre>
Atsižvelgiant jog naujai sukurtas vartotojas neturi jokių teisių, t.y. netgi prisijungimo prie duomenų bazės su prieš tai nurodytu slaptažodžiu.<br />
<br />
Šiam vartotojui suteikiame visas galimas teises, visoms duomenų bazėms ir lentelėms:
<pre><code>GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
</code></pre>
Siekiant suteikti teises visoms duomenų bazėms ar visoms lentelėms yra naudojamas žvaigždutės (*) simbolis.<br />
<br />
Užbaigus vartotojų teisių koregavimo darbus įgaliname prieš tai atliktus pakeitimus su šia komanda:
<pre><code>FLUSH PRIVILEGES;
</code></pre>
<br />
Teisių suteikimo vartotojui sintaksė:<br />

<pre><code>GRANT &lt;teisių_tipas&gt; ON &lt;duomenų_bazė&gt;.&lt;lentelė&gt; TO ‘&lt;vartotojas&gt;’@'localhost’;
</code></pre>
<br />
Įprastai taikomi teisių tipai:<br />

<ul>
<li>ALL PRIVILEGES - visos galimos teisės;</li>
<li>CREATE - leidimas sukurti naują lentelę ar duomenų bazę;</li>
<li>DROP - leidimas pašalinti lentelę ar duomenų bazę;</li>
<li>DELETE - leidimas pašalinti eilutę (įrašą) iš lentelės;</li>
<li>INSERT - leidimas įterpti eilutę (įrašą) į lentelę;</li>
<li>SELECT - leidimas naudoti SELECT komanda, kurios pagalba vartotojas galės peržiūrėti duomenų bazėje saugomus duomenis;</li>
<li>UPDATE - leidimas atnaujinti esamus įrašus;</li>
<li>GRANT OPTION - leidimas suteikti ar pašalinti vartotojams teises.</li>
</ul>
<br />
Tiesių pašalinimui naudojama komandos sintaksė:<br />

<pre><code>REVOKE &lt;teisių_tipas&gt; ON &lt;duomenų_bazė&gt;.&lt;lentelė&gt; FROM ‘&lt;vartotojas&gt;’@'localhost’;
</code></pre>
<br />
Siekiant pašalinti vartotoją vykdoma ši komanda:<br />

<pre><code>DROP USER ‘demo’@‘localhost’;
</code></pre>
<br />
Siekiant išbandyti prisijungimą su naujuoju vartotoju vykdome šias komandas:<br />

<pre><code>quit
</code></pre>
<br />
Inicijuojame naują prisijungimą su kitu vartotoju:<br />

<pre><code>mysql -u&lt;vartotojas&gt; -p
</code></pre>

<hr />
<br />
Dauigau informacijos apie galimas <i>MySQL</i> komandas rasite apsilankę <a rel="nofollow" href="http://dev.mysql.com/doc/refman/5.7/en/tutorial.html">šiuo adresu</a>.]]></description>
   </item>
   <item>
      <title>MySQL root slaptažodžio keitimas jį pamiršus</title>
      <link>https://forumas.dedikuoti.lt/discussion/107/mysql-root-slaptazodzio-keitimas-ji-pamirsus</link>
      <pubDate>Thu, 23 Feb 2012 13:19:10 +0000</pubDate>
      <dc:creator>IV_RomanL</dc:creator>
      <guid isPermaLink="false">107@/discussions</guid>
      <description><![CDATA[Gana dažnai pasitaikanti problema kuomet vartotojas pamiršta MySQL serverio root slaptažodį. Pamokoje pateikiama kaip paprasta slaptažodžio keitimo seka CentOS 6 operacinės sistemos aplinkoje.<br />
<br />
Visos komandos vykdomos prisijungus prie serverio SSH konsolės root vartotojo teisėmis.<br />
<br />
<b>1. Sustabdome MySQLd procesą:</b><br />

<pre><code>service mysqld stop
</code></pre>
<br />
<b>2. Paleidžiame MySQLd procesą:</b><br />

<pre><code>mysqld_safe --skip-grant-tables
</code></pre>
<br />
jei ši komanda užstrigs, tuomet įvykdykite komandą CTRL+Z ir vykdykite toliau pateiktas komandas:<br />

<pre><code>mysql -u root
</code></pre>
<br /><b>
3. Įvykdykite eilės tvarka šias komandas:</b><br />

<pre><code>use mysql;
update user set Password=PASSWORD('jūsų_naujasis_slaptažodis') where user='root';
flush privileges;
exit;
</code></pre>
<br /><b>
4. Tuomet perkrauname mysqld procesą:
</b><pre><code>service mysqld restart
</code></pre>
<br />
Viskas, naujasis MySQL slaptažodis jau yra galiojantis.]]></description>
   </item>
   <item>
      <title>MySQL duomenų bazių valdymo sistemos konfigūravimas</title>
      <link>https://forumas.dedikuoti.lt/discussion/5/mysql-duomenu-baziu-valdymo-sistemos-konfiguravimas</link>
      <pubDate>Thu, 17 Nov 2011 15:01:03 +0000</pubDate>
      <dc:creator>IV_RomanL</dc:creator>
      <guid isPermaLink="false">5@/discussions</guid>
      <description><![CDATA[MySQL - duomenų bazių valdymo sistema, kurios našumas pagrinde priklauso  nuo jai išskirtų resursų - kiek atminties ar procesų galės naudoti ši  tarnyba. Jei šių resursų bus išskirta per mažai, Jūsų svetainės veiks  lėtai, o serveris neišnaudos turimų resursų, jei šių resursų bus skirta  per daug, tai gali lemti nestabilų serverio darbą ar net jo pakibimą.<br />
Pateiksime optimalias pagrindinių kintamųjų, atsakančių už sistemos  našumą, reikšmes, kurias galėsite nustatyti savo MySQL konfigūraciniuose  failuose, priklausomai nuo pasirinkto dedikuoto serverio plano.<br />
Šiuos kintamuosius būtų galima padalinti į dvi grupes, sesijos bei globalius kintamuosius.<br />
<br />
<br />
<b>Sesijos kintamųjų sąrašas</b><br />
<br />
<br />
Sesijos kintamųjų sąrašas padės nustatyti kokios šiuo metu nustatytos  reikšmės jūsų MySQL serveryje. Prisijunkite prie MySQL tarnybos ir  įvykdykite šią komandą:<br />
<br />

<pre><code>shell&gt; mysqld --verbose --help
</code></pre>
<b><br />
Sesijos kintamieji</b><br />
<br />
<b>join_buffer_size</b> - buferis naudojamas nesuindeksuotoms JOIN užklausoms, jungiančioms dvi ar daugiau lentelių;<br />
<b>sort_buffer_size</b> - buferio dydis skirtas SORT BY ar ORDER BY užklausoms;<br />
<b>read_buffer_size</b> - buferis naudojamas nuosekliam visos lentelės skaitymui.<br />
<b>read_rnd_buffer_size</b> - buferis naudojamas skaityti eilutes po įvykdyto rikiavimo, gerina ORDER BY užklausų veikimą.<br />
Sesijos kintamųjų reikšmės neturėtų būti itin didelės, kiekvienai iš Jų  rekomenduojame skirti po 2 megabaitus operatyvinės atminties. Esant  poreikiui bei resursams, reikšmes galima didinti iki 10 megabaitų.<br />
<br />
<br />
<b>Globalūs kintamieji</b><br />
<br />
<br />
<b>tmp_table_size</b> - laikinųjų lentelių buferio dydis, naudojamas kartu su max_heap_table_size;<br />
<b>max_heap_table_size</b> - MEMORY tipo laikinosios lentelės dydis, naudojamas kartu su tmp_table_size;<br />
<b>key_buffer_size</b> - raktų buferio dydis;<br />
<b>query_cache_size</b> - užklausų buferio dydis.<br />
Optimalus resursų kiekis išskiriamas kiekvienam iš šių kintamųjų galėtų būti skaičiuojamas atsižvelgiant į šiuos kriterijus:<br />
<b>query_cache_size</b> atminties podėliui rekomenduojame išskirti apie 10-15% turimos operatyvinės atminties.<br />
<b>key_buffer_size</b> atminties podėliui rekomenduojame išskirti apie 10-15% turimos operatyvinės atminties.<br />
<b>tmp_table_size</b> bei <b>max_heap_table_size</b>  reikšmės turėtų būti vienodos, šiam podėliui rekomenduojame išskirti  apie 5-10% operatyvinės atminties. Jei vienam šių podėlių bus išskirta  mažiau atminties, MySQL tarnyba vadovausis būtent ta mažesne reikšme<br />
<br />
<br />
Pavyzdžiui dedikuoto serverio planui &quot;C4&quot; reikšmės galėtų būti tokios:<br />
<br />
<br />
<b>query_cache_size</b> = 12.5% nuo 4096M = <b>512M</b>;<br />
<b>key_buffer_size</b> = 12.5% nuo 4096M = <b>512M</b>;<br />
<b>tmp_table_size</b> = 6.5% nuo 4096M = <b>256M</b>;<br />
<b>max_heap_table_size</b> = 6.5% nuo 4096M = <b>256M</b>;<br />
<br />
<br />
Šių kintamųjų reikšmės turi būti nustatytos MySQL tarnybos konfigūraciniame faile, kurį galite redaguoti įvykdę šią komandą:
<pre><code>nano -w /etc/my.cnf
</code></pre>
<b>Pavyzdinis my.cnf failas dedikuoto serverio planui &quot;C4&quot;</b><br />

<pre><code># Žemiau pateikiamos reikšmės bus pritaikomos visiems MySQL klientams
[client]
#password       = jusu_slaptazodis
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

# Pateikiamos specifinių programų reikšmės

# MySQL serveris
[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
skip-locking
key_buffer = 256M
key_buffer_size = 512M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 512M
tmp_table_size = 256M
max_heap_table_size = 256M

# Dauginame iš esamo server CPU branduolių kiekio*2 thread_concurrency reikšmei nustatyti
thread_concurrency = 4

# Jei nesijungiate prie MySQL serverio iš išorės, tuomet šią nuostatą galite aktyvuoti.
#skip-networking

# Pašalinkite ženklą # , jei naudojate BDB lenteles
#bdb_cache_size = 64M
#bdb_max_lock = 100000

# Pašalinkite ženklą # , jei naudojate InnoDB lenteles

#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/

# Galite nustatyti sesijos kintamojo .._buffer_pool_size dydį iki 50 - 80 %
# serverio virtualios atminties dydžio.

#innodb_buffer_pool_size = 256M
#innodb_additional_mem_pool_size = 20M

# Galite nustatyti reikšmę .._log_file_size iki 25 % sesijos kintamojo 
# .._buffer_pool_size dydžio

#innodb_log_file_size = 64M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

# Pašalinkite žemiau pateiktos reikšmės komentaro simbolį # jei nesate detaliai susipažinę su SQL
#safe-updates

[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
</code></pre>
Atlikę reikiamus pakeitimus teksto redaktoriuje, failą galėsite  išsaugoti CTRL+O klaviatūros mygtukų paspaudimu. Norint uždaryti teksto  redaktorių spauskite CTRL+X mygtukų derinį.<br />
<br />
Norint, kad atlikti pakeitimai įsigaliotų, MySQL tarnybą reikės perkrauti. Tai galite atlikti įvykdę šią komandą:<br />

<pre><code>service mysqld restart
</code></pre>

<hr />
Naudingos nuorodos:<br />
<br />
<a href="https://github.com/rackerhacker/MySQLTuner-perl" rel="nofollow">MySQL Tuner</a> - perl programavimo kalba parašyta programa gelbėjanti nustatyti optimalias kintamųjų reikšmes.<br />
<a href="http://dev.mysql.com/doc/index.html" rel="nofollow">MySQL programinės įrangos dokumentacija</a><br />
<a href="http://www.mysqlcalculator.com/" rel="nofollow">MySQL atminties kalkuliatorius</a><br />
<a href="http://www.omh.cc/mycnf/" rel="nofollow">my.cnf failo analizatorius</a>
<hr />
Patarimai:<br />
<br />

<ul>
<li>Intensyviai naudojamai MySQL duomenų bazei išskirkite atskirą dedikuotą serverį, tuomet serverio resursai bus skirti tik MySQL tarnybos palaikymui;</li>
<li>Optimizuokite MySQL duomenų bazių lenteles;</li>
<li>Nuolatos stebėkite MySQL programinės įrangos resursų suvartojimą, atitinkamai atlikite pakeitimus konfigūraciniame faile my.cnf ;</li>
<li>Naudojantiems InnoDB pagrindu veikiančias duomenų bazes, rekomenduojame peržiūrėti <a href="https://forumas.dedikuoti.lt/discussion/274/percona-xtradb-duomenu-baziu-serverio-idiegimas-centos-6-os-aplinkoje" rel="nofollow">Percona MySQL</a> sprendimą.</li>
</ul>
]]></description>
   </item>
   </channel>
</rss>
