Ankündigung

Einklappen
Keine Ankündigung bisher.

mySQL Engine MyISAM und INNODB

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mySQL Engine MyISAM und INNODB

    Huhu Zusammen,

    für ein künftiges Projekt mit voraussichtlich vielen Abfragen möchte ich meine mySQL-Datenbank ein wenig optimieren. Ich habe gehört INNODB soll performanter als MyISAM sein und wollte mein System dafür konfigurieren.

    Mein System: Debian etch64 - AMD64 3700+ - 1GB RAM

    Nun wenn ich eine Tabelle mit meinem DB Designer von EMS oder phpMyAdmin anlege, dann kann ich allerdings nicht die INNODB-Engine auswählen.

    Den letzten Abschnitt habe ich nach der mySQL-Doku konfiguriert und mysql neu gestartet. Die INNODB-Files ibdata1 und ibdata2 sowie die logs wurden angelegt.

    Hier meine my.cf
    Code:
    [client]
    character-sets-dir    = /usr/share/mysql/charsets
    default-character-set = utf8
    port                  = 3306
    socket                = /var/run/mysqld/mysqld.sock
    
    [mysql]
    character-sets-dir    = /usr/share/mysql/charsets
    default-character-set = utf8
    no-auto-rehash
    
    [mysqladmin]
    character-sets-dir    = /usr/share/mysql/charsets
    default-character-set = utf8
    
    [mysqlcheck]
    character-sets-dir    = /usr/share/mysql/charsets
    default-character-set = utf8
    
    [mysqldump]
    character-sets-dir    = /usr/share/mysql/charsets
    default-character-set = utf8
    max_allowed_packet    = 16M
    quick
    
    [mysqlimport]
    character-sets-dir    = /usr/share/mysql/charsets
    default-character-set = utf8
    
    [mysqlshow]
    character-sets-dir    = /usr/share/mysql/charsets
    default-character-set = utf8
    
    [isamchk]
    character-sets-dir    = /usr/share/mysql/charsets
    key_buffer_size       = 256M
    sort_buffer_size      = 256M
    read_buffer_size      = 4M
    write_buffer_size     = 4M
    
    [myisamchk]
    character-sets-dir    = /usr/share/mysql/charsets
    key_buffer_size       = 256M
    sort_buffer_size      = 256M
    read_buffer_size      = 4M
    write_buffer_size     = 4M
    
    [myisampack]
    character-sets-dir    = /usr/share/mysql/charsets
    
    [mysqld_safe]
    err-log               = /var/log/mysql/mysql.err
    open-files-limit      = 4096
    
    [mysqld]
    character-sets-dir    = /usr/share/mysql/charsets
    character-set-server  = utf8
    default-character-set = utf8
    user                  = mysql
    port                  = 3306
    
    # bind-address          = 127.0.0.1
    
    socket                = /var/run/mysqld/mysqld.sock
    pid-file              = /var/run/mysqld/mysqld.pid
    log-error             = /var/log/mysql/mysqld.err
    basedir               = /usr
    datadir               = /var/lib/mysql
    tmpdir                = /tmp
    language              = /usr/share/mysql/german
    log-bin               = mysql-bin
    server-id             = 1
    sync_binlog           = 1
    binlog_cache_size     = 1M
    max_binlog_size       = 10M
    slave_compressed_protocol = 1
    delay-key-write       = ALL
    
    # skip-locking
    # skip-networking
    # skip-name-resolve
    # skip-external-locking
    # skip-show-database
    
    safe-user-create      = 1
    default_table_type    = MYISAM
    transaction_isolation = REPEATABLE-READ
    max_allowed_packet    = 16M
    max_heap_table_size   = 64M
    tmp_table_size        = 64M
    key_buffer_size       = 384M
    sort_buffer_size      = 8M
    join_buffer_size      = 8M
    read_buffer_size      = 8M
    read_rnd_buffer_size  = 16M
    bulk_insert_buffer_size = 32M
    myisam_sort_buffer_size = 64M
    myisam_max_sort_file_size = 1G
    myisam_max_extra_sort_file_size = 1G
    myisam_repair_threads = 1
    thread_cache_size     = 8
    table_cache           = 512
    query_cache_type      = 1
    query_cache_size      = 32M
    query_cache_limit     = 2M
    thread_concurrency    = 8
    local-infile          = 0
    long_query_time       = 3
    log_slow_queries
    log_long_format
    myisam_recover
    
    #skip-innodb
    
    
    innodb_thread_concurrency = 8
    innodb_buffer_pool_size = 384M
    innodb_additional_mem_pool_size = 20M
    innodb_data_home_dir = /var/lib/mysql
    innodb_log_arch_dir = /var/lib/mysql
    innodb_log_group_home_dir = /var/lib/mysql
    innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
    innodb_log_file_size = 100M
    innodb_log_buffer_size = 8M
    innodb_log_files_in_group = 2
    innodb_flush_log_at_trx_commit = 1
    innodb_lock_wait_timeout = 60
    
    [mysqlhotcopy]
    interactive-timeout

  • #2
    Ich hab ja jetzt nicht wirklich viel Ahnung von Performance etc., aber ich denke eher es wird umgekehrt sein.

    Bei InnoDB gibt es Fremdschlüssel-Beziehungen, Constraints etc - und das ganze muss ja auch geprüft werden, da klänge es für mich logischer wenn MyISAM schneller wäre...

    Kommentar


    • #3
      Hallo Lindwyrm,

      was Agrajag schon vermutete, kann ich nur aus Erfahrung bestätigen: MyISAM ist um einiges langsamer. MyISAM hat nur den Nachteil, dass es eine maximale Tabellengröße und noch weitere Einschränkungen gegenüber InnoDB gibt. Wenn du ein Projekt hast, in dem die Tabellen nicht größer 1GB (max ist 2GB) werden, so gibt es keinen Grund auf InnoDB zu wechseln, es sei denn, du möchtest die Features (Foreign Key Constraint Checking) dediziert nutzen.

      Kommentar


      • #4
        Danke euch für die Info!

        zudem kann man mit ALTER TABLE die Engine recht einfach umstellen, von daher werde ich mit MyISAM beginnen.

        Kommentar

        Lädt...
        X