Class: MysqlCacheManager::InnodbBufferPool
- Inherits:
-
Object
- Object
- MysqlCacheManager::InnodbBufferPool
- Defined in:
- lib/mysql_cache_manager/innodb_buffer_pool.rb
Constant Summary collapse
- QUERY_STATUS =
<<-EOQ SELECT * FROM information_schema.global_status WHERE variable_name LIKE 'INNODB\\_%' EOQ
- QUERY_PAGES =
<<-EOQ SELECT space, page_number FROM information_schema.innodb_buffer_page WHERE page_type IN ("INDEX") EOQ
Instance Method Summary collapse
- #each_page ⇒ Object
- #fetch_page(space, pages) ⇒ Object
-
#initialize(mysql) ⇒ InnodbBufferPool
constructor
A new instance of InnodbBufferPool.
- #status ⇒ Object
Constructor Details
#initialize(mysql) ⇒ InnodbBufferPool
Returns a new instance of InnodbBufferPool.
14 15 16 |
# File 'lib/mysql_cache_manager/innodb_buffer_pool.rb', line 14 def initialize(mysql) @mysql = mysql end |
Instance Method Details
#each_page ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/mysql_cache_manager/innodb_buffer_pool.rb', line 28 def each_page unless block_given? return Enumerable::Enumerator.new(self, :each_page) end pages = 0 pages_result = @mysql.query(QUERY_PAGES) pages_result.each_hash do |row| pages += 1 if 0 == (pages % 1000) puts "Fetched #{pages} pages so far..." end yield row["space"].to_i, row["page_number"].to_i end pages end |
#fetch_page(space, pages) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/mysql_cache_manager/innodb_buffer_pool.rb', line 46 def fetch_page(space, pages) unless pages.is_a? Array pages = [pages] end fetch_query = "SELECT engine_control(innodb, prefetch_pages, #{space}, #{pages.join(',')}) AS pages_fetched" if result = @mysql.query(fetch_query) if status_row = result.fetch_hash return status_row["pages_fetched"].to_i end end nil end |
#status ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/mysql_cache_manager/innodb_buffer_pool.rb', line 18 def status status_result = @mysql.query(QUERY_STATUS) status_vars = {} status_result.each_hash do |row| var = row['VARIABLE_NAME'].sub("INNODB_", "").downcase status_vars[var] = row['VARIABLE_VALUE'].to_i end status_vars end |