我有一个MySQL少数据库1.9标,表明通过以下命令。

SELECT table_schema "Data Base Name"
     , sum( data_length + index_length ) / 1 048 576 
       as "Data Base Size in MB"
     , sum( data_free )/ 1 048 576  
       as "Free Space in MB"
FROM information_schema.TABLES
GROUP BY table_schema ; 

+--------------------+----------------------+------------------+
| Data Base Name     | Data Base Size in MB | Free Space in MB |
+--------------------+----------------------+------------------+
| database_name      |        1959.73437500 |   31080.00000000 | 

我的问题是:

  1. 这是否意味着如果我设定的innodb_buffer_pool_size2GB或更大,整个数据库可以载入记忆,所以少得多的读磁盘请求是必要的?

  2. 什么是免费的空间31GB的意思吗?

  3. 如果最大的RAM可以分配给innodb_buffer_pool_size是1GB,是否有可能指定的表格,载入记忆,同时保持其他人总是读磁盘?

在此先感谢。

有帮助吗?

解决方案

  1. 不正好。少缓冲区的游泳池是用于缓冲读和写。如果您的大多数访问读,大多数,如果将缓和较少的磁盘访问将是需要的。
  2. 可能是这个 错误, ,它不记录非常好,但我认为data_free是可用空间内的少文件(如果你写的比这更少将拥有扩大的数据文件(s))。
  3. 没有,但少将的高速缓存的数据访问的大多数自动的,所以它应该有一个最佳的效果。

考虑使用 缓存 作为一个缓层,以消除数据库的访问完全如果你需要更好的业绩。

其他提示

  1. 这是更好的担心有足够的高速缓冲存储器中的索引ram,并留下的磁盘上的数据。数据库的性能受到很大的,如果该索引可读磁盘每个时间远远超过开销后,检索所需的数据从磁盘。
  2. 少数文件被创建在一个固定的尺寸,可以选择自动扩充他们的(创造额外的文件),如果他们得到充分。你可以看到的每个文件的尺寸是有 show variables like 'innodb_data_file_path'.免费的空间报告是多少,目前的数据文件的使用。在你的情况,你有2gigs的数据存储(最有可能)32gigs的少数据文件,而使30gig。
  3. 是没有任何理由,你想要绕过少自己的cacheing逻辑销的特定表在内存?缓自然会倾向于保持最经常访问的数据在ram已经和绩效无疑将有遭受如果你迫使它保持较少使用的数据,而不是最受欢迎的。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top