sql >> Databáze >  >> RDS >> Mysql

Pro urychlení zredukujte dotazy MySQL na jeden dotaz

Podívejte se, zda aktuálně zachycuji provoz pomocí Obecného protokolu:

SELECT @@general_log;   -- 1 if capturing, 0 if not
-- for me, a 1. This means I have been capturing (good for development. Poor idea for Production)

SELECT @@general_log_file; -- file name for General Log if capturing.
-- for me: GeneralLogBegin_20160803_1420.log

SELECT @@datadir; -- the location of the general_log, and other logs
-- for me: C:\ProgramData\MySQL\MySQL Server 5.6\Data\

Nyní vypínám zachycování Obecného protokolu níže, protože můj zachycoval:

SET GLOBAL general_log=0; -- stop logging

PŘESUNUJI svůj soubor protokolu do záložního adresáře a přejmenuji jej na GL_from_20160803_1420_to_20160806_1559

Existuje jen malá nejednoznačnost ohledně obsahu a rozsahu data a času zachycení, které výše uvedený soubor ztělesňuje.

Nastavte nový název pro zachycení souboru protokolu (Začít segment pro název souboru)

SET GLOBAL general_log_file='GeneralLogBegin_20160806_1559.log';
SET GLOBAL general_log=1; -- Start logging again

Spusťte moji aplikaci, která se připojuje k serveru a Obecný protokol obsahuje:

ChunkA:

160806 16:08:37   170 Connect   [email protected] on stackoverflow
          170 Query SHOW VARIABLES
          170 Query SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP())
          170 Query SHOW COLLATION
          170 Query SET NAMES latin1
          170 Query SET character_set_results=NULL
          170 Init DB   my_db_name

Poznámka:Možná budete muset udělat

mysqladmin -u root -p flush-log

(výzva k zadání hesla), aby se vyprázdnily protokoly z mezipaměti do souboru. Mimochodem, Sulime Text je úžasné pro automatické obnovení aktuálně načteného textového souboru. Například soubor protokolu.

Takže můj ChunkA výše je útržek připojení přicházejícího nového připojení. Je řízen příkazy používaného programu, ať už je to cokoliv. Je před příkazy vašeho programu, na které jste zvyklí a kódujete. Pokud neustále vytváříte nová připojení, provádíte kód, který píšete, a odpojujete se, je to všechno součástí zavazadla. Nemáte kontrolu nad jejich optimalizací jednoduchým způsobem.

Co byste měli zvážit, je VYPNUTÍ protokolu obecného dotazu v produkčním prostředí. A to pouze při nastavení prostředí ladění a testování. Jeho zapnutý zvyšuje zbytečnou zátěž na váš stack.



  1. Nemohu generovat soubory mapování hibernace a POJO z databáze PostgreSQL?

  2. Jak zvládnout fragmentaci sloupce auto_increment ID v MySQL

  3. Jak se připojit k mysql běžícímu v kontejneru z hostitelského počítače

  4. Operace sjednocení dotazů Oracle SQL?