MySQL-Optimierung

AllOnline

New Member
Hallo,

ich möchte mich mal an das (alte) Thema anschließen.
Ich habe ein paar größe Datenbank abfragen, die 99% CPU brauchen und eben ne gewisse Zeit laufen. Da auf dem Server noch ein paar andere Sachen laufen, würde ich gerne die CPU Nutzung von Prozessen, spiziell von MySQL JE Prozess begrenzen. (Ich denke 50% reichen für den anfang)

Dennoch lässt sich bestimmt was an MySQL verbessern:
Code:
-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.1.49-3
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 6M (Tables: 466)
[--] Data in InnoDB tables: 38M (Tables: 53)
[--] Data in MEMORY tables: 0B (Tables: 1)
[!!] Total fragmented tables: 83

-------- Performance Metrics -------------------------------------------------
[--] Up for: 25d 0h 39m 10s (2M q [1.082 qps], 118K conn, TX: 3B, RX: 507M)
[--] Reads / Writes: 75% / 25%
[--] Total buffers: 58.0M global + 2.7M per thread (151 max threads)
[OK] Maximum possible memory usage: 463.8M (11% of installed RAM)
[OK] Slow queries: 0% (0/2M)
[OK] Highest usage of available connections: 14% (22/151)
[OK] Key buffer size / total MyISAM indexes: 16.0M/4.1M
[OK] Key buffer hit rate: 99.9% (8M cached / 6K reads)
[OK] Query cache efficiency: 58.3% (943K cached / 1M selects)
[!!] Query cache prunes per day: 11522
[OK] Sorts requiring temporary tables: 0% (8 temp sorts / 209K sorts)
[!!] Joins performed without indexes: 87989
[!!] Temporary tables created on disk: 33% (82K on disk / 247K total)
[OK] Thread cache hit rate: 99% (380 created / 118K connections)
[!!] Table cache hit rate: 0% (64 open / 9K opened)
[OK] Open file limit used: 10% (106/1K)
[OK] Table locks acquired immediately: 99% (1M immediate / 1M locks)
[!!] InnoDB data size / buffer pool: 38.3M/8.0M

-------- Recommendations -----------------------------------------------------
General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    Enable the slow query log to troubleshoot bad queries
    Adjust your join queries to always utilize indexes
    When making adjustments, make tmp_table_size/max_heap_table_size equal
    Reduce your SELECT DISTINCT queries without LIMIT clauses
    Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
    query_cache_size (> 16M)
    join_buffer_size (> 128.0K, or always use indexes with joins)
    tmp_table_size (> 16M)
    max_heap_table_size (> 16M)
    table_cache (> 64)
    innodb_buffer_pool_size (>= 38M)

Danke euch!
 
<Moderation>
In einen neuen Thread abgelöst.
</Moderation>

Zum Thema:
Du willst die Einstellungen des MySQL-Servers optimieren um dann mit MySQL-JE (also einem Java-embedded-MySQL-Server) darauf zugreifen zu können?
Ich bin mir nicht sicher, ob Du MySQL-JE korrekt einsetzt oder das Prinzip davon verstanden hast.

Sicherlich kann der MySQL-JE die normale my.cf einlesen. Aber eine Serverweite my.cf ist i.d.R. nicht für einen Embedded-Server geeignet.
Insbesondere nicht, weil es unsinnig ist einen Embedded-Server auf einem Server laufen zu lassen.

Abgesehen davon, ist die CPU-Last von MySQLd i.d.R. nicht beherrschbar. Das ginge eher über den Nice-Level.

Zu dem Output: Um Grunde sagt Dir das Script unter "Variables to adjust" was aktuell zu tun ist.

huschi.
 
Back
Top