国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

    <cite id="gf5jf"><label id="gf5jf"></label></cite>
  • <div id="gf5jf"><listing id="gf5jf"></listing></div>
    學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦硬件知識(shí) > 內(nèi)存知識(shí) > mysql耗內(nèi)存嗎?應(yīng)該怎么處理?

    mysql耗內(nèi)存嗎?應(yīng)該怎么處理?

    時(shí)間: 本達(dá)868 分享

    mysql耗內(nèi)存嗎?應(yīng)該怎么處理?

      mysql耗內(nèi)存嗎?很多人都說(shuō)MySQL占用了很大的虛擬內(nèi)存,那么這個(gè)問(wèn)題應(yīng)該怎么解決呢?下面是學(xué)習(xí)啦小編收集整理的一些方法,現(xiàn)在分享給大家!

      解決mysql耗內(nèi)存的具體方法一:

      在分析的過(guò)程中發(fā)現(xiàn)最耗內(nèi)存的是MySQL,其中近1GB的內(nèi)存被它吞了,而且不在任務(wù)管理器體現(xiàn)出來(lái)。這個(gè)數(shù)據(jù)庫(kù)軟件是EMS要用到了,所以必須要運(yùn)行。這個(gè)軟件在安裝的時(shí)候會(huì)根據(jù)機(jī)器的實(shí)際內(nèi)存自動(dòng)進(jìn)行配置,PC機(jī)物理內(nèi)存越多,它默認(rèn)占有的內(nèi)存就越多,難怪3GB的內(nèi)存被它給吞了近1GB。

      優(yōu)化方法:

      1. 退出EMS client&server

      2. 在CMD里運(yùn)行:net stop mysql

      3. 找到MySQL\MySQL Server的安裝目錄,里面有個(gè)my.ini文件,參考附件的配置對(duì)參數(shù)query_cache_size tmp_table_size myisam_sort_buffer_size key_buffer_size innodb_buffer_pool_size進(jìn)行修改,注意不要改動(dòng)innodb_log_file_size,修改前備份my.ini

      4. 在CMD里運(yùn)行:net start mysql,如果提示成功,則說(shuō)明修改的參數(shù)沒(méi)有什么問(wèn)題,如果失敗,重新調(diào)整一下上面的參數(shù)

      5. 找到EMS 安裝目錄runGUI.bat runServer.bat腳本,找到-Xmx700m,改為-Xmx256m,注意修改前備份這兩個(gè)文件,感謝Liping Sun提供幫助

      6. 重新運(yùn)行EMS

      前后對(duì)比,對(duì)于3GB的PC,發(fā)現(xiàn)可以節(jié)省近1GB的內(nèi)存。對(duì)于2GB的PC,也可以節(jié)省600-800MB。優(yōu)化后發(fā)現(xiàn)EMS啟動(dòng)稍微慢一些,但是其它的軟件運(yùn)行速度提高了很多,不在經(jīng)常出現(xiàn)卡機(jī)現(xiàn)象了。如果在運(yùn)行過(guò)程中發(fā)現(xiàn)EMS特別慢的話,自己也可以適當(dāng)放大上面提到的一些參數(shù)。

      my.ini

      # MySQL Server Instance Configuration File

      # ----------------------------------------------------------------------

      # Generated by the MySQL Server Instance Configuration Wizard

      #

      #

      # Installation Instructions

      # ----------------------------------------------------------------------

      #

      # On Linux you can copy this file to /etc/my.cnf to set global options,

      # mysql-data-dir/my.cnf to set server-specific options

      # (@localstatedir@ for this installation) or to

      # ~/.my.cnf to set user-specific options.

      #

      # On Windows you should keep this file in the installation directory

      # of your server (e.g. C:\Program Files\MySQL\MySQL Server X.Y). To

      # make sure the server reads the config file use the startup option

      # "--defaults-file".

      #

      # To run run the server from the command line, execute this in a

      # command line shell, e.g.

      # mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"

      #

      # To install the server as a Windows service manually, execute this in a

      # command line shell, e.g.

      # mysqld --install MySQLXY --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"

      #

      # And then execute this in a command line shell to start the server, e.g.

      # net start MySQLXY

      #

      #

      # Guildlines for editing this file

      # ----------------------------------------------------------------------

      #

      # In this file, you can use all long options that the program supports.

      # If you want to know the options a program supports, start the program

      # with the "--help" option.

      #

      # More detailed information about the individual options can also be

      # found in the manual.

      #

      #

      # CLIENT SECTION

      # ----------------------------------------------------------------------

      #

      # The following options will be read by MySQL client applications.

      # Note that only client applications shipped by MySQL are guaranteed

      # to read this section. If you want your own MySQL client program to

      # honor these values, you need to specify it as an option during the

      # MySQL client library initialization.

      #

      [client]

      port=3306

      [mysql]

      default-character-set=utf8

      # SERVER SECTION

      # ----------------------------------------------------------------------

      #

      # The following options will be read by the MySQL Server. Make sure that

      # you have installed the server correctly (see above) so it reads this

      # file.

      #

      [mysqld]

      # The TCP/IP Port the MySQL Server will listen on

      port=3306

      #Path to installation directory. All paths are usually resolved relative to this.

      basedir="D:/Program Files/MySQL/MySQL Server 5.1/"

      #Path to the database root

      datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/"

      # The default character set that will be used when a new schema or table is

      # created and no character set is defined

      character-set-server=utf8

      # The default storage engine that will be used when create new tables when

      default-storage-engine=INNODB

      # Set the SQL mode to strict

      sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

      # The maximum amount of concurrent sessions the MySQL server will

      # allow. One of these connections will be reserved for a user with

      # SUPER privileges to allow the administrator to login even if the

      # connection limit has been reached.

      max_connections=1510

      # Query cache is used to cache SELECT results and later return them

      # without actual executing the same query once again. Having the query

      # cache enabled may result in significant speed improvements, if your

      # have a lot of identical queries and rarely changing tables. See the

      # "Qcache_lowmem_prunes" status variable to check if the current value

      # is high enough for your load.

      # Note: In case your tables change very often or if your queries are

      # textually different every time, the query cache may result in a

      # slowdown instead of a performance improvement.

      query_cache_size=16M

      # The number of open tables for all threads. Increasing this value

      # increases the number of file descriptors that mysqld requires.

      # Therefore you have to make sure to set the amount of open files

      # allowed to at least 4096 in the variable "open-files-limit" in

      # section [mysqld_safe]

      table_cache=3020

      # Maximum size for internal (in-memory) temporary tables. If a table

      # grows larger than this value, it is automatically converted to disk

      # based table This limitation is for a single table. There can be many

      # of them.

      tmp_table_size=4M

      # How many threads we should keep in a cache for reuse. When a client

      # disconnects, the client's threads are put in the cache if there aren't

      # more than thread_cache_size threads from before. This greatly reduces

      # the amount of thread creations needed if you have a lot of new

      # connections. (Normally this doesn't give a notable performance

      # improvement if you have a good thread implementation.)

      thread_cache_size=64

      #*** MyISAM Specific options

      # The maximum size of the temporary file MySQL is allowed to use while

      # recreating the index (during REPAIR, ALTER TABLE or LOAD DATA INFILE.

      # If the file-size would be bigger than this, the index will be created

      # through the key cache (which is slower).

      myisam_max_sort_file_size=100G

      # If the temporary file used for fast index creation would be bigger

      # than using the key cache by the amount specified here, then prefer the

      # key cache method. This is mainly used to force long character keys in

      # large tables to use the slower key cache method to create the index.

      myisam_sort_buffer_size=4M

      # Size of the Key Buffer, used to cache index blocks for MyISAM tables.

      # Do not set it larger than 30% of your available memory, as some memory

      # is also required by the OS to cache rows. Even if you're not using

      # MyISAM tables, you should still set it to 8-64M as it will also be

      # used for internal temporary disk tables.

      key_buffer_size=16M

      # Size of the buffer used for doing full table scans of MyISAM tables.

      # Allocated per thread, if a full scan is needed.

      read_buffer_size=64K

      read_rnd_buffer_size=256K

      # This buffer is allocated when MySQL needs to rebuild the index in

      # REPAIR, OPTIMZE, ALTER table statements as well as in LOAD DATA INFILE

      # into an empty table. It is allocated per thread so be careful with

      # large settings.

      sort_buffer_size=256K

      #*** INNODB Specific options ***

      # Use this option if you have a MySQL server with InnoDB support enabled

      # but you do not plan to use it. This will save memory and disk space

      # and speed up some things.

      #skip-innodb

      # Additional memory pool that is used by InnoDB to store metadata

      # information. If InnoDB requires more memory for this purpose it will

      # start to allocate it from the OS. As this is fast enough on most

      # recent operating systems, you normally do not need to change this

      # value. SHOW INNODB STATUS will display the current amount used.

      innodb_additional_mem_pool_size=9M

      # If set to 1, InnoDB will flush (fsync) the transaction logs to the

      # disk at each commit, which offers full ACID behavior. If you are

      # willing to compromise this safety, and you are running small

      # transactions, you may set this to 0 or 2 to reduce disk I/O to the

      # logs. Value 0 means that the log is only written to the log file and

      # the log file flushed to disk approximately once per second. Value 2

      # means the log is written to the log file at each commit, but the log

      # file is only flushed to disk approximately once per second.

      innodb_flush_log_at_trx_commit=1

      # The size of the buffer InnoDB uses for buffering log data. As soon as

      # it is full, InnoDB will have to flush it to disk. As it is flushed

      # once per second anyway, it does not make sense to have it very large

      # (even with long transactions).

      innodb_log_buffer_size=5M

      # InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and

      # row data. The bigger you set this the less disk I/O is needed to

      # access data in tables. On a dedicated database server you may set this

      # parameter up to 80% of the machine physical memory size. Do not set it

      # too large, though, because competition of the physical memory may

      # cause paging in the operating system. Note that on 32bit systems you

      # might be limited to 2-3.5G of user level memory per process, so do not

      # set it too high.

      innodb_buffer_pool_size=32M

      # Size of each log file in a log group. You should set the combined size

      # of log files to about 25%-100% of your buffer pool size to avoid

      # unneeded buffer pool flush activity on log file overwrite. However,

      # note that a larger logfile size will increase the time needed for the

      # recovery process.

      innodb_log_file_size=88M

      # Number of threads allowed inside the InnoDB kernel. The optimal value

      # depends highly on the application, hardware as well as the OS

      # scheduler properties. A too high value may lead to thread thrashing.

      innodb_thread_concurrency=8

      解決mysql耗內(nèi)存的具體方法二:

      更改后如下:

      innodb_buffer_pool_size=576M ->256M InnoDB引擎緩沖區(qū)占了大頭,首要就是拿它開(kāi)刀

      query_cache_size=100M ->16M 查詢緩存

      tmp_table_size=102M ->64M 臨時(shí)表大小

      key_buffer_size=256m ->32M

      重啟mysql服務(wù)后,虛擬內(nèi)存降到200以下.

      另外mysql安裝目錄下有幾個(gè)文件:my-huge.ini 、my-large.ini、my-medium.ini...這幾個(gè)是根據(jù)內(nèi)存大小作的建議配置,新手在設(shè)置的時(shí)候也可以參考一下。

      2G內(nèi)存的MYSQL數(shù)據(jù)庫(kù)服務(wù)器 my.ini優(yōu)化 (my.ini)

      2G內(nèi)存,針對(duì)站少,優(yōu)質(zhì)型的設(shè)置,試驗(yàn)特:

      table_cache=1024 物理內(nèi)存越大,設(shè)置就越大.默認(rèn)為2402,調(diào)到512-1024最佳

      innodb_additional_mem_pool_size=8M 默認(rèn)為2M

      innodb_flush_log_at_trx_commit=0 等到innodb_log_buffer_size列隊(duì)滿后再統(tǒng)一儲(chǔ)存,默認(rèn)為1

      innodb_log_buffer_size=4M 默認(rèn)為1M

      innodb_thread_concurrency=8 你的服務(wù)器CPU有幾個(gè)就設(shè)置為幾,默認(rèn)為8

      key_buffer_size=256M 默認(rèn)為218 調(diào)到128最佳

      tmp_table_size=64M 默認(rèn)為16M 調(diào)到64-256最掛

      read_buffer_size=4M 默認(rèn)為64K

      read_rnd_buffer_size=16M 默認(rèn)為256K

      sort_buffer_size=32M 默認(rèn)為256K

      max_connections=1024 默認(rèn)為1210

      試驗(yàn)一:

      table_cache=512或1024

      innodb_additional_mem_pool_size=2M

      innodb_flush_log_at_trx_commit=0

      innodb_log_buffer_size=1M

      innodb_thread_concurrency=8 你的服務(wù)器CPU有幾個(gè)就設(shè)置為幾,默認(rèn)為8

      key_buffer_size=128M

      tmp_table_size=128M

      read_buffer_size=64K或128K

      read_rnd_buffer_size=256K

      sort_buffer_size=512K

      max_connections=1024

      試驗(yàn)二:

      table_cache=512或1024

      innodb_additional_mem_pool_size=8M

      innodb_flush_log_at_trx_commit=0

      innodb_log_buffer_size=4M

      innodb_thread_concurrency=8

      key_buffer_size=128M

      tmp_table_size=128M

      read_buffer_size=4M

      read_rnd_buffer_size=16M

      sort_buffer_size=32M

      max_connections=1024

      一般:

      table_cache=512

      innodb_additional_mem_pool_size=8M

      innodb_flush_log_at_trx_commit=0

      innodb_log_buffer_size=4M

      innodb_thread_concurrency=8

      key_buffer_size=128M

      tmp_table_size=128M

      read_buffer_size=4M

      read_rnd_buffer_size=16M

      sort_buffer_size=32M

      max_connections=1024

      經(jīng)過(guò)測(cè)試.沒(méi)有特殊情況,最好還是用默認(rèn)的.

      2G內(nèi)存,針對(duì)站多,抗壓型的設(shè)置,最佳:

      table_cache=1024 物理內(nèi)存越大,設(shè)置就越大.默認(rèn)為2402,調(diào)到512-1024最佳

      innodb_additional_mem_pool_size=4M 默認(rèn)為2M

      innodb_flush_log_at_trx_commit=1

      (設(shè)置為0就是等到innodb_log_buffer_size列隊(duì)滿后再統(tǒng)一儲(chǔ)存,默認(rèn)為1)

      innodb_log_buffer_size=2M 默認(rèn)為1M

      innodb_thread_concurrency=8 你的服務(wù)器CPU有幾個(gè)就設(shè)置為幾,建議用默認(rèn)一般為8

      key_buffer_size=256M 默認(rèn)為218 調(diào)到128最佳

      tmp_table_size=64M 默認(rèn)為16M 調(diào)到64-256最掛

      read_buffer_size=4M 默認(rèn)為64K

      read_rnd_buffer_size=16M 默認(rèn)為256K

      sort_buffer_size=32M 默認(rèn)為256K

      max_connections=1024 默認(rèn)為1210

      thread_cache_size=120 默認(rèn)為60

      query_cache_size=64M

      優(yōu)化mysql數(shù)據(jù)庫(kù)性能的十個(gè)參數(shù)

      (1)、max_connections:

      允許的同時(shí)客戶的數(shù)量。增加該值增加 mysqld 要求的文件描述符的數(shù)量。這個(gè)數(shù)字應(yīng)該增加,否則,你將經(jīng)??吹?too many connections 錯(cuò)誤。 默認(rèn)數(shù)值是100,我把它改為1024 。

      (2)、record_buffer:

      每個(gè)進(jìn)行一個(gè)順序掃描的線程為其掃描的每張表分配這個(gè)大小的一個(gè)緩沖區(qū)。如果你做很多順序掃描,你可能想要增加該值。默認(rèn)數(shù)值是131072(128k),我把它改為16773120 (16m)

      (3)、key_buffer_size:

      索引塊是緩沖的并且被所有的線程共享。key_buffer_size是用于索引塊的緩沖區(qū)大小,增加它可得到更好處理的索引(對(duì)所有讀和多重寫(xiě)),到你能負(fù)擔(dān)得起那樣多。如果你使它太大,系統(tǒng)將開(kāi)始換頁(yè)并且真的變慢了。默認(rèn)數(shù)值是8388600(8m),我的mysql主機(jī)有2gb內(nèi)存,所以我把它改為 402649088(400mb)。

      4)、back_log:

      要求 mysql 能有的連接數(shù)量。當(dāng)主要mysql線程在一個(gè)很短時(shí)間內(nèi)得到非常多的連接請(qǐng)求,這就起作用,然后主線程花些時(shí)間(盡管很短)檢查連接并且啟動(dòng)一個(gè)新線程。

      back_log 值指出在mysql暫時(shí)停止回答新請(qǐng)求之前的短時(shí)間內(nèi)多少個(gè)請(qǐng)求可以被存在堆棧中。只有如果期望在一個(gè)短時(shí)間內(nèi)有很多連接,你需要增加它,換句話說(shuō),這值對(duì)到來(lái)的tcp/ip連接的偵聽(tīng)隊(duì)列的大小。你的操作系統(tǒng)在這個(gè)隊(duì)列大小上有它自己的限制。試圖設(shè)定back_log高于你的操作系統(tǒng)的限制將是無(wú)效的。

      當(dāng)你觀察你的主機(jī)進(jìn)程列表,發(fā)現(xiàn)大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | null | connect | null | login | null 的待連接進(jìn)程時(shí),就要加大 back_log 的值了。默認(rèn)數(shù)值是50,我把它改為500。

      (5)、interactive_timeout:

      服務(wù)器在關(guān)閉它前在一個(gè)交互連接上等待行動(dòng)的秒數(shù)。一個(gè)交互的客戶被定義為對(duì) mysql_real_connect()使用 client_interactive 選項(xiàng)的客戶。 默認(rèn)數(shù)值是28800,我把它改為7200。

      (6)、sort_buffer:

      每個(gè)需要進(jìn)行排序的線程分配該大小的一個(gè)緩沖區(qū)。增加這值加速order by或group by操作。默認(rèn)數(shù)值是2097144(2m),我把它改為 16777208 (16m)。

      (7)、table_cache:

      為所有線程打開(kāi)表的數(shù)量。增加該值能增加mysqld要求的文件描述符的數(shù)量。mysql對(duì)每個(gè)唯一打開(kāi)的表需要2個(gè)文件描述符。默認(rèn)數(shù)值是64,我把它改為512。

      (8)、thread_cache_size:

      可以復(fù)用的保存在中的線程的數(shù)量。如果有,新的線程從緩存中取得,當(dāng)斷開(kāi)連接的時(shí)候如果有空間,客戶的線置在緩存中。如果有很多新的線程,為了提高性能可以這個(gè)變量值。通過(guò)比較 connections 和 threads_created 狀態(tài)的變量,可以看到這個(gè)變量的作用。我把它設(shè)置為 80。

      (9)mysql的搜索功能

      用mysql進(jìn)行搜索,目的是能不分大小寫(xiě),又能用中文進(jìn)行搜索

      只需起動(dòng)mysqld時(shí)指定 --default-character-set=gb2312

      (10)、wait_timeout:

      服務(wù)器在關(guān)閉它之前在一個(gè)連接上等待行動(dòng)的秒數(shù)。 默認(rèn)數(shù)值是28800,我把它改為7200。

      注:參數(shù)的調(diào)整可以通過(guò)修改 /etc/my.cnf 文件并重啟 mysql 實(shí)現(xiàn)。這是一個(gè)比較謹(jǐn)慎的工作,上面的結(jié)果也僅僅是我的一些看法,你可以根據(jù)你自己主機(jī)的硬件情況(特別是內(nèi)存大小)進(jìn)一步修改。

    1326896