Yii Framework Forum: Wydjność bazy danych - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Wydjność bazy danych Rate Topic: -----

#1 User is offline   robikon 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 17-October 11

Posted 20 June 2012 - 04:01 PM

Witam.
Jakie ustawienie odnośnie cache'owania powinny być ustawione przy połączeniu z MySQL.
Czy ustawienie cache'owania schematu

 'schemaCachingDuration'=>3600,


jest wystarczające i w jaki sposób mogę sprawdzić efekt włączenia tego?

Napotkałem jeszcze 2 parametry do ustawienia:

'enableProfiling' => true,
'enableParamLogging' => true,

oraz

'cache'=>array(
          'class'=>'system.caching.CFileCache',
          'cachePath'=>'cache',
          'directoryLevel'=>1
),

0

#2 User is offline   Mariusz W. 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 24
  • Joined: 15-December 11
  • Location:Poland/Warsaw

Posted 21 June 2012 - 01:55 AM

Witaj,

1)
'cache'=>array(
          'class'=>'system.caching.CFileCache',
          'cachePath'=>'cache',
          'directoryLevel'=>1
),

Tutaj ustalasz klasę cachującą i sposób cachowania.
W tym przypadku pamięć podręczna będzie zapisywana do pliku.
Jest kilka innych klas APC, MemCache, DbCache (domyślnie zapisuje do bazy sqlite3).
APC i MemCache wymagają ustawienia serwera (na większości hostingów nie ma takiej opcji).

2)
'schemaCachingDuration'=>3600,

Powoduje cachowanie schematu tabel. Za każdym razem jak tworzysz nowy aktywny rekord danego rodzaju
to najpierw pobierana jest informacja jak zbudowana jest tabela (jakie ma pola, jakie rodzaje pól).
Jeżeli masz ustawiony cache z 1. pkt. to wtedy tam zapiszą się informacje o budowie i będą pobierane z tamtąd.
Należy uważać: gdy zmienisz coś w bazie danych (np. dodasz nowe pole) to należy wyczyścić pamięć podręczną.
Zresztą możesz to sprawdzić za pomocą rozszerzenia z pkt. 4 :-)

3)
'enableProfiling' => true,
'enableParamLogging' => true,


Te dwa parametry powinny być wyłączone na serwerze produkcyjnym.
Np. pierwszy z nich powoduje liczenie jak długo dane zapytanie się wykonywało.
Potrzebne w fazie testów i pracy nad aplikacją, a potem można wyłączyć.

4) Do testowania szybkości działania zapytań SQL polecam to rozszerzenie:
http://www.yiiframew...-debug-toolbar/
Oprócz tego zawiera wiele innych informacji takich jak: zmienne globalne, użycie pamięci podczas działania skryptu itd.

Pozdrawiam Mariusz
Posted Image
Posted Image
0

#3 User is offline   sidewinder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 207
  • Joined: 08-July 09
  • Location:Poland

Posted 21 June 2012 - 03:04 AM

debug-toolbar jest faktycznie dobrym narzędziem, ale jeżeli potrzebujesz coś na szybko to wystarczy CWebLogRoute. Pamiętaj także, że przedwczesna optymalizacja jest zła. Sprawdź czy Twoja aplikacja faktycznie ma jakieś wyraźnie wolniejsze fragmenty, potem sprawdź czy te fragmenty mają w ogóle jakieś znaczenie. Jeżeli mimo wolniejszych miejsc, serwer jest w stanie obsłużyć np. 5000 zapytań na minute, a nie przewidujesz ich więcej jak 1000, to nie masz co tracić czasu na cachowanie i inne bajery. Jak liczba zapytań zacznie się zbliżać do limitu, to wtedy możesz podziałać.
---------------------------------------------------------------------
"Never memorize what you can look up in books."
Albert Einstein
0

#4 User is offline   TomaszKane 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 29-July 11

Posted 03 July 2012 - 05:35 AM

Dopiszę się do wątku, nie działa mi cache zapytań.

Yii::app()->db->queryCacheID
zwraca "cache"

Institution::model()->cache(6000)->findAll($criteria);
mimo to, wywołanie tego kodu zawsze wysyła query do MYSQL'a - dlaczego? O czym zapomniałem/nie wiem?

$criteria nie wyszukuje po polach typu BLOB.

Wysłane zapytanie do serwera db to np:
SELECT `id`, `name`, `city` FROM `institution` `t` WHERE `name` LIKE '%kasp%' LIMIT 10


EDIT
To był głupi błąd, źle skonfigurowałem klasę cache w main.php
'cache'=>array(
    'class'=>'system.caching.CApcCache',
),

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users