Skocz do zawartości
Kolopik

Optymalizacja mysql'a

Polecane posty

Witam. Zainstalowałem mysq na serwerze, który ma 512MB ramu delikatnie zoptymalizowałem bazę, a mysql zjada mi 180MB ramu. Na tak małym serwerze da się to odczuć.

Mój skrypt korzysta tylko z jednej bazy danych, w bazie też mam jednego użytkownika i jak dobrze pamiętam 5 tabel ;p Na stronie przebywają maksymalnie 2 osoby :)

Mój my.cnf

 

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port		= 3306
socket		= /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket		= /var/run/mysqld/mysqld.sock
nice		= 0

[mysqld]
#
# * Basic Settings
#
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir		= /usr
datadir		= /var/lib/mysql
tmpdir		= /tmp
language	= /usr/share/mysql/english
skip-external-locking



#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address		= 127.0.0.1
#
# * Fine Tuning
#
key_buffer		= 32M
max_allowed_packet	= 11M
thread_stack		= 128K
thread_cache_size	= 12
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover		= BACKUP
#max_connections 	= 100
#table_cache 	= 64
#thread_concurrency 	= 10
#
# * Query Cache Configuration
#
query_cache_limit 	= 12M
query_cache_size 	= 12M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
#log		= /var/log/mysql/mysql.log
#
# Error logging goes to syslog. This is a Debian improvement 
#
# Here you can see queries with especially long duration
#log_slow_queries	= /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# 	other settings you may need to change.
#server-id		= 1
#log_bin			= /var/log/mysql/mysql-bin.log
expire_logs_days	= 10
max_binlog_size 	= 12M
#binlog_do_db		= include_database_name
#binlog_ignore_db	= include_database_name
#
# * BerkeleyDB
#
# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
skip-bdb
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
#skip-innodb
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem



[mysqldump]
quick
quote-names
max_allowed_packet	= 12M

[mysql]
#no-auto-rehash	# faster start of mysql but no tab completition

[isamchk]
key_buffer		= 12M

#
# * NDB Cluster
#
# See /usr/share/doc/mysql-server-*/README.Debian for more information.
#
# The following configuration is read by the NDB Data Nodes (ndbd processes)
# not from the NDB Management Nodes (ndb_mgmd processes).
#
# [MYSQL_CLUSTER]
# ndb-connectstring=127.0.0.1


#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

 

Możliwe, że w my.cnf coś popsułem, bo nigdy wcześniej nie optymalizowałem mysql'a :rolleyes:

 

Z góry dzięki za pomoc. Pozdrawiam.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Mruczek

Odkomentuj:

 

#skip-innodb

 

Od razu dostaniesz "gratis" około 100MB RAMu. Oczywiście stracisz obsługę InnoDB :-)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Odkomentuj:

 

#skip-innodb

 

Od razu dostaniesz "gratis" około 100MB RAMu. Oczywiście stracisz obsługę InnoDB :-)

 

Wielkie dzięki!

100MB w dół :)

 

Dzięki wszystkim za odpowiedzi, wszystkie są bardzo przydatne :rolleyes:

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Łukasz Tkacz

Podczepię się pod temat - jak wyłączyć innodb na centosie i kloxo?

Plik my.cnf jest w etc, ale można go wywalić, a i tak mysql działa... sam już nie wiem, gdzie szukać.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Podczepię się pod temat - jak wyłączyć innodb na centosie i kloxo?

Plik my.cnf jest w etc, ale można go wywalić, a i tak mysql działa... sam już nie wiem, gdzie szukać.

 

MySQL ma swoje ustawienia domyślne, które plik konfiguracyjny nadpisuje. Dlatego działa po usunięciu my.cnf.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Podczepię się pod temat - jak wyłączyć innodb na centosie i kloxo?

Plik my.cnf jest w etc, ale można go wywalić, a i tak mysql działa... sam już nie wiem, gdzie szukać.

 

Nie wywalasz pliku tylko odznaczasz

usuwasz #

z linijki

#skip-innoDB

Wielkie dzięki tez 100mb w dół ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Łukasz Tkacz

Tak, ale w tym domyślnym pliku tego NIE MA, i w tym cały problem ;)

 

@ahes:

Ok, ale jak dopisałem co trzeba i zresetowałem, to brak jakichkolwiek zmian. Baza jak brała ~140 MB, tak bierze nadal. InnoDB dostępne, choć wpis w pliku od tego jest.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Niemożliwe ;) Właśnie sprawdzłem na jedym centosie i konfig ładuje z /etc/my.cnf. A sprawdzałeś ścieżki konfigów w /etc/init.d/mysqld?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wystarczy dopisać... my.cnf ładuje się zawsze z /etc bądź /etc/mysql

Dopisz do swojego /etc/my.cnf skip-innodb, daj restart i po sprawie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Takie małe OT. Można gdzieś zmienić strefę czasową PHP lub MySql ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

w systemie lub php.ini

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dobra wina była na serwerze matce. A teraz pytanie też do mysql jest może skrypt(php) który pokazuje ile waży dana baza ? Coś jak DA pokazuje w "Zarządzaniem bazami mysql"

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

select table_schema "Database", 
sum( data_length + index_length ) / 1024 / 1024 "Size (MB)", 
sum( data_free )/ 1024 / 1024 "Free (MB)" 
from information_schema.tables 
group by table_schema;

 

Powinno działać ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A jak to odpalić. Chciałem coś z php a to wygląda jak BMW xD nic z tego nie wiem. (Proszę o wytłumaczenie jak dla początkującego.)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

to jest zwykłe zapytanie sql :) więc chyba wiesz jak to użyć w php? ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Y nie za bardzo. Wiec proszę o dobrą rade. Najlepiej bym to chciał na index by wiedzieć w realtime.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Y nie za bardzo. Wiec proszę o dobrą rade. Najlepiej bym to chciał na index by wiedzieć w realtime.

 

Normalnie ręce opadają.

 

Skorzystaj z google, z dokumentacji php, mysqla lub czegokolwiek, wykaż choć odrobinę inicjatywy i postaraj się czegoś nauczyć/zrozumieć zamiast bezmyślnie klepać to co Ci ktoś na forum napisze.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

podłącze się pod temat. czy ktoś zaobserwował problemy z directadminem przy wyłączonej obsłudze innodb (skip-innodb). googlowałem, ale nic nie znalazłem a nie chciałbym nic popsuć;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

podłącze się pod temat. czy ktoś zaobserwował problemy z directadminem przy wyłączonej obsłudze innodb (skip-innodb). googlowałem, ale nic nie znalazłem a nie chciałbym nic popsuć;)

 

Nie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Malu odpowiadasz za siebie wiec ty nie masz problemów. A autor posta wyraźnie pytania czy ktoś ma...

Szanowny panie regdos zamiast pisać problematycznie posty odpisał byś na mojego posta z pomocnej strony. Wiem że google wie wszystko,ale nie każdy ma czas by szukać tysiące stron.. Wiec jeśli nie udzielasz odpowiedzi na danego posta to proszę wyłącz klawiaturę i nie dogryzaj tym którzy się dopiero uczą.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×