mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 02:46:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			123 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Ruby
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			Ruby
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env ruby
 | |
| 
 | |
| # Groonga: 70dc95ef3b6fed1225981d099a65dcb7297248c5
 | |
| #
 | |
| # N segments	N chunks	N patterns	N records
 | |
| # 1	1	2	50
 | |
| # 2	2	2	18898
 | |
| # 4	4	2	31181
 | |
| # 8	8	2	57853
 | |
| # 16	16	2	91349
 | |
| # 32	32	2	178502
 | |
| # 64	64	2	475020
 | |
| # 128	128	2	1066081
 | |
| # 256	256	2	2250389
 | |
| # 512	512	2	4648072
 | |
| # nil	nil	1	16779239
 | |
| # nil	nil	2	4648063
 | |
| # nil	nil	4	7239005
 | |
| # nil	nil	8	8308626
 | |
| # nil	nil	16	11068608
 | |
| # nil	nil	32	12670806
 | |
| # nil	nil	64	18524231
 | |
| # nil	nil	128	38095525
 | |
| # nil	nil	256	51265415
 | |
| 
 | |
| require "fileutils"
 | |
| require "json"
 | |
| 
 | |
| def check_max_index(options)
 | |
|   max_n_segments = options[:max_n_segments]
 | |
|   max_n_chunks = options[:max_n_chunks]
 | |
|   n_patterns = options[:n_patterns] || 2
 | |
| 
 | |
|   ENV["GRN_II_MAX_N_SEGMENTS_SMALL"] = max_n_segments&.to_s
 | |
|   ENV["GRN_II_MAX_N_CHUNKS_SMALL"] = max_n_chunks&.to_s
 | |
| 
 | |
|   db_dir = "/dev/shm/db"
 | |
|   log_path = "#{db_dir}/log"
 | |
|   FileUtils.rm_rf(db_dir)
 | |
|   FileUtils.mkdir_p(db_dir)
 | |
|   command_line = [
 | |
|     "groonga",
 | |
|     "--log-path", log_path,
 | |
|     "-n", "#{db_dir}/db",
 | |
|   ]
 | |
|   IO.popen(command_line, "r+") do |groonga|
 | |
|     groonga.puts("table_create x TABLE_HASH_KEY UInt32")
 | |
|     groonga.gets
 | |
|     groonga.puts("column_create x y COLUMN_SCALAR UInt32")
 | |
|     groonga.gets
 | |
|     groonga.puts("table_create a TABLE_PAT_KEY UInt32")
 | |
|     groonga.gets
 | |
|     groonga.puts("column_create a b COLUMN_INDEX|INDEX_SMALL x y")
 | |
|     groonga.gets
 | |
| 
 | |
|     groonga.puts("load --table x")
 | |
|     groonga.puts("[")
 | |
|     File.open(log_path) do |log|
 | |
|       log.seek(0, IO::SEEK_END)
 | |
|       log_size = log.size
 | |
|       i = 0
 | |
|       catch do |abort|
 | |
|         loop do
 | |
|           y = i + 1
 | |
|           n_patterns.times do
 | |
|             groonga.print(JSON.generate({"_key" => i, "y" => y}))
 | |
|             groonga.puts(",")
 | |
|             groonga.flush
 | |
|             i += 1
 | |
|             if log.size != log_size
 | |
|               data = log.read
 | |
|               if /\|[Ae]\|/ =~ data
 | |
|                 parameters = [
 | |
|                   max_n_segments.inspect,
 | |
|                   max_n_chunks.inspect,
 | |
|                   n_patterns.inspect,
 | |
|                   i,
 | |
|                 ]
 | |
|                 puts(parameters.join("\t"))
 | |
|                 # puts(data)
 | |
|                 throw(abort)
 | |
|               end
 | |
|               log_size = log.size
 | |
|             end
 | |
|           end
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|     groonga.puts("]")
 | |
|     load_response = groonga.gets
 | |
|     # puts(load_response)
 | |
| 
 | |
|     groonga.puts("quit")
 | |
|     groonga.gets
 | |
|   end
 | |
| end
 | |
| 
 | |
| puts("N segments\tN chunks\tN patterns\tN records")
 | |
| [
 | |
|   [1, 1, 2],
 | |
|   [2, 2, 2],
 | |
|   [4, 4, 2],
 | |
|   [8, 8, 2],
 | |
|   [16, 16, 2],
 | |
|   [32, 32, 2],
 | |
|   [64, 64, 2],
 | |
|   [128, 128, 2],
 | |
|   [256, 256, 2],
 | |
|   [512, 512, 2],
 | |
|   [nil, nil, 1],
 | |
|   [nil, nil, 2],
 | |
|   [nil, nil, 4],
 | |
|   [nil, nil, 8],
 | |
|   [nil, nil, 16],
 | |
|   [nil, nil, 32],
 | |
|   [nil, nil, 64],
 | |
|   [nil, nil, 128],
 | |
|   [nil, nil, 256],
 | |
| ].each do |max_n_segments, max_n_chunks, n_parameters|
 | |
|   check_max_index(:max_n_segments => max_n_segments,
 | |
|                   :max_n_chunks => max_n_chunks,
 | |
|                   :n_patterns => n_parameters)
 | |
| end
 | 
