abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 21:44 | Komunita

    Ubuntu 24.10 bude Oracular Oriole (věštecká žluva).

    Ladislav Hagara | Komentářů: 1
    dnes 20:22 | Nová verze

    Byla vydána nová verze 2.45.0 distribuovaného systému správy verzí Git. Přispělo 96 vývojářů, z toho 38 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání. Vypíchnout lze počáteční podporu repozitářů, ve kterých lze používat SHA-1 i SHA-256.

    Ladislav Hagara | Komentářů: 0
    dnes 13:33 | IT novinky

    Před 25 lety, ve čtvrtek 29. dubna 1999, byla spuštěna služba "Úschovna".

    Ladislav Hagara | Komentářů: 0
    dnes 01:00 | Nová verze

    Byla vydána nová verze 24.04.28 s kódovým názvem Time After Time svobodného multiplatformního video editoru Shotcut (Wikipedie) a nová verze 7.24.0 souvisejícího frameworku MLT Multimedia Framework. Nejnovější Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    včera 16:33 | Nová verze Ladislav Hagara | Komentářů: 0
    včera 03:22 | Zajímavý článek

    V aktuálním příspěvku na blogu počítačové hry Factorio (Wikipedie) se vývojář s přezývkou raiguard rozepsal o podpoře Linuxu. Rozebírá problémy a výzvy jako přechod linuxových distribucí z X11 na Wayland, dekorace oken na straně klienta a GNOME, změna velikosti okna ve správci oken Sway, …

    Ladislav Hagara | Komentářů: 0
    včera 00:11 | Nová verze

    Rakudo (Wikipedie), tj. překladač programovacího jazyka Raku (Wikipedie), byl vydán ve verzi #171 (2024.04). Programovací jazyk Raku byl dříve znám pod názvem Perl 6.

    Ladislav Hagara | Komentářů: 7
    27.4. 17:44 | Nová verze

    Společnost Epic Games vydala verzi 5.4 svého proprietárního multiplatformního herního enginu Unreal Engine (Wikipedie). Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    26.4. 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 12
    26.4. 13:33 | Nová verze

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 9
    KDE Plasma 6
     (75%)
     (8%)
     (2%)
     (15%)
    Celkem 882 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Mysql optimalizace tabulek nepomaha, stale velka zatez

    30.1.2008 15:19 Keli | skóre: 5
    Mysql optimalizace tabulek nepomaha, stale velka zatez
    Přečteno: 3202×
    Zdravim,

    chtel bych se zeptat popr. poradit ohledne databaze Mysql. Provozuji web server bezici na php 4 + mysql 4.2.1. V spickach (cca 50 queries/s) me stoupa load az k hodnotam 3, tabulky jsou optimalizovany pomoci indexu, dotazy provereny pres Explain. Cacheovani dotazu nemuze byt, protoze se data neustale meni.

    Muze byt problemem, to ze nejvice ctena + zapisovana tabulka ma cca 350000 zaznamu. Celkova velikost databaze je cca 100MB.

    Server Intel(R) Xeon(TM) CPU 2.80GHz, 1GB pameti, system Gentoo.

    Diky.

    Odpovědi

    30.1.2008 15:27 tyctor | skóre: 13
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    to asi nebude databazou, nieje nijak zvlast velka...
    kouzer avatar 30.1.2008 15:31 kouzer | skóre: 11 | Mladá Boleslav
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Ta db není moc velká.. Mám zkušenosti s daleko většíma.. Co se hodit třeba Create table??? Nebo taky třeba dotazy jaký tam běhaj... Tohle nikomu nic moc neřekne.
    Linux user #448944.
    30.1.2008 15:53 Keli | skóre: 5
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Prikladam datovou strukturu nejvetsich tabulek photos 23000 zaznamu, photos_comments 356000zaznamu, ostatni tabulky maji maximalne 2 tisice zaznamu, nemyslim si, ze by nejak zasadne ovlivnovali vykon.
    CREATE TABLE `photos` (
      `id` int(8) NOT NULL auto_increment,
      `titulek` varchar(50) character set latin2 default NULL,
      `popis` text character set latin2,
      `vkladatel` varchar(50) character set latin2 default NULL,
      `vkladatel_email` varchar(50) character set latin2 default NULL,
      `kategorie` varchar(20) character set latin2 default NULL,
      `lokalita` varchar(50) character set latin2 default NULL,
      `jezdec` varchar(50) character set latin2 default NULL,
      `zobrazeno` int(8) default '0',
      `hodnoceno` int(5) default NULL,
      `hodnoceni` int(5) default NULL,
      `last_vote` varchar(20) character set latin2 default NULL,
      `ip` varchar(16) character set latin2 default NULL,
      `ins_time` datetime NOT NULL default '0000-00-00 00:00:00',
      `last_com_user` varchar(50) character set latin2 default NULL,
      `last_com_time` datetime default NULL,
      `category` int(2) default NULL,
      PRIMARY KEY  (`id`),
      KEY `hodnoceno` (`hodnoceno`),
      KEY `hodnoceni` (`hodnoceni`),
      KEY `vkladatel` (`vkladatel`),
      KEY `datum` (`datum`),
      KEY `ip` (`ip`),
      KEY `jezdec` (`jezdec`),
      KEY `ins_time` (`ins_time`),
      KEY `category` (`category`),
      KEY `lokalita` (`lokalita`)
    ) ENGINE=MyISAM;
    
    -- --------------------------------------------------------
    
    -- 
    -- Table structure for table `photos_comments`
    -- 
    
    CREATE TABLE `photos_comments` (
      `id` int(10) NOT NULL auto_increment,
      `photo_id` int(10) NOT NULL default '0',
      `jmeno` varchar(50) character set latin2 default NULL,
      `mail` varchar(50) character set latin2 default NULL,
      `comment` text character set latin2,
      `datum` varchar(20) character set latin2 default NULL,
      `ip` varchar(16) character set latin2 default NULL,
      `auth` int(8) default NULL,
      PRIMARY KEY  (`id`),
      KEY `photo_id` (`photo_id`)
    );
    Nejcastejsi dotazy na tabulky (spojovana tabulka photos_categories ma 12 zaznamu, id je primarni klic):
    SELECT photos.id AS id, titulek,datum,vkladatel, vkladatel_email,popis, lokalita,jezdec,zobrazeno,hodnoceno,hodnoceni,last_vote, photos_categories.category AS category, photos_categories.id AS cat_id FROM photos, photos_categories WHERE photos.category = photos_categories.id AND photos.id=36244 LIMIT 1
    
    SELECT id,titulek,hodnoceni/hodnoceno,hodnoceno FROM photos WHERE ins_time > CURRENT_TIMESTAMP - INTERVAL 7 DAY AND hodnoceno>10 ORDER BY (hodnoceni/hodnoceno) ASC LIMIT 10
    
    SELECT jmeno,mail,datum, comment,ip,id FROM photos_comments WHERE photo_id='33935' ORDER BY id
    Nikde nejsou zadne slozite dotazy, zadne spojovani x tabulek apod
    Dalibor Smolík avatar 30.1.2008 16:24 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Nevidím tam žádnou zradu ... snad jestli u tabulky photos není příliš mnoho klíčů (KEY), neposoudím, zda jsou bezpodmínečně nutné. Při zadávání id používám specifikaci
    id int unsigned not null auto_increment primary key
    ale to by nemělo mít na rychlost žádný vliv.
    Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
    30.1.2008 16:29 Keli | skóre: 5
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Indexu je tam mnoho kvuli vyhledavani, do tabulky photos neni az tak mnoho zapisu, zato naopak do tabulky photos_comments je zapisu velice mnoho, proto je tam index pouze jeden, ten pres ktery vyhledava seznam odpovidajicich komentaru.
    Dalibor Smolík avatar 30.1.2008 18:50 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    No, přesto bych počet indexů snížil. Já provádím vyhledávání přes skripty php, kdy vyhledávám všechny výrobky, které mají v názvu "polštář". Napíšu do formuláře třeba "polšt" a vyjede mi příslušná sestava ..
    Seznam a detaily faktur mám tvořený dvěma tabulkami, jedna je pro záhlaví faktury a druhá pro položky zboží. Ta druhá tabulka má 25 polí (sloupců), klíč mám jeden id auto_increment a další dvě pole mají indexy (pole pro číslo smlouvy a pro číslo faktury). Další indexy nepotřebuji.
    Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
    30.1.2008 20:13 Keli | skóre: 5
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    A kolik mate dotazu/s v spicce, pokud je jich minimum, je jedno zda-li mate indexy ci ne.
    Dalibor Smolík avatar 30.1.2008 20:46 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Dotazů je málo - max. 3 - 4 v jednom okamžiku. Otázkou je vyzkoušet rychlost, pokud je dotaz jenom jeden. V každém případě bez indexů bylo generování sestavy mnohem pomalejší.
    Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
    30.1.2008 20:59 Keli | skóre: 5
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Ano, to zajiste, bez indexu by to bylo pomalejsi. Nicmene u me je zatez nesrovnatelne vetsi nez u vas, dokud byla zatez mensi, zadne problemy s loadem nebyly.
    kouzer avatar 30.1.2008 17:32 kouzer | skóre: 11 | Mladá Boleslav
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Co zkusit "optimitze table" a "analyze table" ?
    Linux user #448944.
    30.1.2008 17:43 Keli | skóre: 5
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    samozrejme vyzkouseno, nic vyznamneho se nezmenilo.
    kouzer avatar 30.1.2008 18:36 kouzer | skóre: 11 | Mladá Boleslav
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Nejsem expert, ale příliš indexů škodí.. Osobně bych hledal chybu někde v tom.. Třeba to rozdělit do víc tabulek.
    Linux user #448944.
    30.1.2008 20:12 Keli | skóre: 5
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Indexy ovlivnuji vyhledavani tim ze jej zrychluji, naopak cim vic indexu, tim jde vykon dolu u update, insert, replace apod, kde se musi indexy po uprave dat prepsat.
    30.1.2008 20:42 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Jaderné noviny - 12. 12. 2007

    Jste si jist, ze za to vytizeni muze mysql? Nejcastejsi dotazy jeste nemuseji byt ty, ktere davaji db nejvice zabrat. Jste si jist, ze prave v techto sql travi server nejvice casu?

    A zkuste sem vlozit explain tech selectu.

    30.1.2008 21:04 Keli | skóre: 5
    Rozbalit Rozbalit vše Re: Jaderné noviny - 12. 12. 2007
    Dle topu, je nejvetsi zatizeni CPU ma mysqld
    explain SELECT photos.id AS id, titulek,datum,vkladatel, vkladatel_email,popis, lokalita,jezdec,zobrazeno,hodnoceno,hodnoceni,last_vote, photos_categories.category AS category, photos_categories.id AS cat_id FROM photos, photos_categories WHERE photos.category = photos_categories.id AND photos.id=36244 LIMIT 1
        -> ;
    +----+-------------+-------------------+-------+------------------+---------+---------+-------+------+-------+
    | id | select_type | table             | type  | possible_keys    | key     | key_len | ref   | rows | Extra |
    +----+-------------+-------------------+-------+------------------+---------+---------+-------+------+-------+
    |  1 | SIMPLE      | photos            | const | PRIMARY,category | PRIMARY |       4 | const |    1 |       |
    |  1 | SIMPLE      | photos_categories | const | PRIMARY          | PRIMARY |       4 | const |    1 |       |
    +----+-------------+-------------------+-------+------------------+---------+---------+-------+------+-------+
    2 rows in set (0.02 sec)
    
    explain SELECT id,titulek,hodnoceni/hodnoceno,hodnoceno FROM photos WHERE ins_time > CURRENT_TIMESTAMP - INTERVAL 7 DAY AND hodnoceno>10 ORDER BY (hodnoceni/hodnoceno) ASC LIMIT 10
        -> ;
    +----+-------------+--------+-------+--------------------+----------+---------+------+------+-----------------------------+
    | id | select_type | table  | type  | possible_keys      | key      | key_len | ref  | rows | Extra                       |
    +----+-------------+--------+-------+--------------------+----------+---------+------+------+-----------------------------+
    |  1 | SIMPLE      | photos | range | hodnoceno,ins_time | ins_time |       8 | NULL |  446 | Using where; Using filesort |
    +----+-------------+--------+-------+--------------------+----------+---------+------+------+-----------------------------+
    
    mysql> explain SELECT jmeno,mail,datum, comment,ip,id FROM photos_comments WHERE photo_id='33935' ORDER BY id;
    +----+-------------+-----------------+------+---------------+----------+---------+-------+------+-----------------------------+
    | id | select_type | table           | type | possible_keys | key      | key_len | ref   | rows | Extra                       |
    +----+-------------+-----------------+------+---------------+----------+---------+-------+------+-----------------------------+
    |  1 | SIMPLE      | photos_comments | ref  | photo_id      | photo_id |       4 | const |    1 | Using where; Using filesort |
    +----+-------------+-----------------+------+---------------+----------+---------+-------+------+-----------------------------+
    
    
    31.1.2008 10:25 DRSON
    Rozbalit Rozbalit vše Re: Jaderné noviny - 12. 12. 2007
    a) "WHERE ins_time > CURRENT_TIMESTAMP - INTERVAL 7 DAY" tohle je smrt. Opravdu potrebujes fotky 7 dni zpatky s presnosti jakou ma CURRENT_TIMESTAMP ? Nestacilo by od pulnoci minuleho ctvrtka? Spocitej si v phpku nebo v cem to mas timestamp pulnoci 7 dni zpatky a porovnavej to jako cisla. Pak budes celej den spoustet ten samej dotaz a SQL cache ti k necemu bude.

    b) spust na vsech tabulkach ANALYZE TABLE a OPTIMIZE TABLE a spoustej to pravidelne (1 za tyden/den?). Po velkym mnozstvi insertu to dela zazraky.

    c) razeni podle pocitany hodnoty taky neni nic moc. Je to sice trosku proti normalizaci ale co si udelat novou tabulku s photo_id a vypocitanym hodnoceni/hodnoceno, nebo to rvat primo do photos a udrzovat to aktualni pri zmenach? Pak se na to da totiz udelat index :) Normalizace tim sice vazne utrpi, ale zrychleni to asi prinese.

    A posledni rada na zaver: Precti si toto http://me.in-berlin.de/doc/mysql-doc/manual_MySQL_Optimization.html Je to moc zajimavy cteni :)

    Dej pak vedet jak jsi dopadl, pripadne jestli jsi prisel na neco dalsiho. Resime ted podobnej problem (i kdyz to nemame tak kriticky ;)).
    30.1.2008 21:43 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    A load 3 ve špičce je moc? Přijde mi to OK. Spíše je otázkou, zda je dostačující rychlost odpovědi.
    30.1.2008 21:45 denix
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    V nasej aplikacii sice pouzivame Postgresql ale tiez sme mali velky problem so slabou vykonostou, potom som zmenil ext3 na raiserfs a vykon siel rapidne hore. Aky suborovy system pouzivate vy?
    31.1.2008 09:35 Keli | skóre: 5
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Pouzivam ext3, je to ostry stroj nemuzu menit souborovy system :(
    31.1.2008 10:21 Duff
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Možná se u te ext3 podívat na nastavení commit (případně jaká je defaultní hodnota, při vytváření v gentoo) a pokud je nastavena na nějakou nízkou hodnotu (dost degraduje výkon, ale je bezpečná při výpadku), tak ji zvýšit (stačí na to remount fs). Někde ve faq je návod na optimalizac fs.
    31.1.2008 10:39 R
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    To je zbytocne.
    31.1.2008 08:19 razor | skóre: 33
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Zdar, ještě by si mohl uvést konfiguraci mysql. Např: show variables like '%size%'. A zapnout si logování pomalých dotazů, abys viděl na čem ti to visí (pokud to ovšem vázne na mysql).
    31.1.2008 09:32 Keli | skóre: 5
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    mysql> show variables like '%size%';
    +---------------------------------+----------------------+
    | Variable_name                   | Value                |
    +---------------------------------+----------------------+
    | binlog_cache_size               | 32768                |
    | bulk_insert_buffer_size         | 8388608              |
    | delayed_queue_size              | 1000                 |
    | innodb_additional_mem_pool_size | 2097152              |
    | innodb_buffer_pool_size         | 16777216             |
    | innodb_log_buffer_size          | 8388608              |
    | innodb_log_file_size            | 5242880              |
    | join_buffer_size                | 131072               |
    | key_buffer_size                 | 134217728            |
    | key_cache_block_size            | 1024                 |
    | max_binlog_cache_size           | 18446744073709551615 |
    | max_binlog_size                 | 1073741824           |
    | max_heap_table_size             | 16777216             |
    | max_join_size                   | 18446744073709551615 |
    | max_relay_log_size              | 0                    |
    | myisam_data_pointer_size        | 4                    |
    | myisam_max_extra_sort_file_size | 2147483648           |
    | myisam_max_sort_file_size       | 9223372036854775807  |
    | myisam_sort_buffer_size         | 16777216             |
    | preload_buffer_size             | 32768                |
    | query_alloc_block_size          | 8192                 |
    | query_cache_size                | 0                    |
    | query_prealloc_size             | 8192                 |
    | range_alloc_block_size          | 2048                 |
    | read_buffer_size                | 2093056              |
    | read_rnd_buffer_size            | 2093056              |
    | sort_buffer_size                | 4194296              |
    | thread_cache_size               | 0                    |
    | tmp_table_size                  | 33554432             |
    | transaction_alloc_block_size    | 8192                 |
    | transaction_prealloc_size       | 4096                 |
    +---------------------------------+----------------------+
    31 rows in set (0.03 sec)
    
    Logovani pomalych dotazu mam zapnute a nic se neloguje, citac pomalych dotazu hlasi 0
    31.1.2008 08:58 R
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    Load 3 je uplne v pohode, ak je to stale rychle. Ta tabulka a databaza je malicka. Na webserveri (Celeron 1,7GHz, 1280MB RAM) mame 2GB databaz, dve tabulky maju >400MB (jedna z nich je najpouzivanejsia), pocet riadkov v niektorych tabulkach je okolo 2 milionov. Priemerne 65 queries/s. V spicke byva load aj 13 a napriek tomu je odozva velmi slusna.
    31.1.2008 09:30 Keli | skóre: 5
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    U me je prave odezva pomalejsi, jinak bych na to, ze je zvyseny load neprisel.
    31.1.2008 10:40 R
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    A este som zabudol: je tam ext3.
    2.2.2008 10:08 Jirka
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    A s jakymi parametry je pripojen disk? Treba parametr sync dokaze hodne zpomalit pristup na disk.
    15.2.2008 18:28 gondo
    Rozbalit Rozbalit vše Re: Mysql optimalizace tabulek nepomaha, stale velka zatez
    zdravim doporucujem vzhliadnut toto video http://video.google.com/videoplay?docid=2524524540025172110 niekde ku koncu je spomeute aj to ako optimalizovat ten vyber podla casu

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.