Abstract:
Provided is a computer system, including: at least one of database computers, in which a database management system operates; a storage system for storing a database operated by the database management system; and a management computer for managing the database computer and the storage system, the storage system having a cache memory for storing data temporarily and a physical disk drive for storing the database, in which the management computer changes capacity of the cache memory which is allocated to the database computer where the database management system operates, and instructs the database management system to change an access plan according to the change in capacity of the cache memory allocated to the database computer.

Description:
CLAIM OF PRIORITY  
       [0001]     The present application claims priority from Japanese patent application P2005-207019 filed on Jul. 15, 2005, the content of which is hereby incorporated by reference into this application.  
       BACKGROUND  
       [0002]     This invention relates to a computer system that includes a database management system for operating a database. More specifically, this invention relates to a technique of selecting an optimum access plan.  
         [0003]     Today, business and other organizations store an enormous amount of data in a database (DB), and a database management system (DBMS), which collects data from a DB plays an important role in running of such an organization.  
         [0004]     In general, a DBMS operates on a server. The server is connected to a storage system and stores DB data in the connected storage system.  
         [0005]     A DBMS performs the following processing:  
         [0006]     When receiving an inquiry from a client, a DBMS first conducts optimization processing. Optimization processing is processing executed to select an access plan that is most efficient in executing the inquiry made by the client. The DBMS then accesses a DB based on the chosen access plan.  
         [0007]     Further, there are known two types of optimization processing: rule-based optimization processing and cost-based optimization processing.  
         [0008]     In the rule-based optimization processing, an access plan is determined based on how a code (SQL statement) used by a client to make an inquiry is stated or the like. In the cost-based optimization processing, an access plan is determined based on such information as the speed of CPU (CPU cost) of the server on which the DBMS operates.  
         [0009]     A client has to have considerable knowledge to enable a DBMS to employ rule-based optimization processing. It is therefore common for a DBMS to employ cost-based optimization processing.  
         [0010]     An example of optimization processing employed by a DBMS is disclosed in Volker Markl, Vijayshankar Raman, David Simmen, Guy Lohman, Hamid Pirahes, Miso Cilimdzic: “Robust query processing through progressive optimization”, Proc. Of the 2004 ACM SIGMOD International Conference on Management of Data, 2004, p. 659-670.  
         [0011]     According to this publication, a technique is known which changes an access plan during execution of the access plan if there is another executable access plan that is lower in cost.  
         [0012]     The storage system receives a request (write request or read request) from the server to which it is connected and on which the DBMS operates, and processes the request as follows:  
         [0013]     The storage system has a disk drive and a cache memory. The disk drive is a non-volatile storage medium (e.g., hard disk drive) where data is stored. The cache memory is a volatile storage medium (e.g., semiconductor memory) where data is stored temporarily.  
         [0014]     Upon reception of a read request from the server, the storage system judges whether requested data is stored in the cache memory or not.  
         [0015]     When the requested data is stored in the cache memory, the storage system reads the data out of the cache memory and sends the read data to the server, whereby the processing is ended.  
         [0016]     Generally speaking, data is read out of a cache memory quicker than out of a disk drive. A storage system therefore can respond to a request of a server faster by reading data out of a cache memory instead of a disk drive.  
         [0017]     Usually, a storage system has one cache memory and is connected to plural servers. The cache memory in this case is shared among the plural servers connected to the storage system. How much of the cache memory each of the servers is allowed to use is not regulated.  
         [0018]     For that reason, when one of the servers makes a request to read a large amount of data, the cache memory is used up by this server and applications of other servers that share the cache memory are lowered in performance.  
         [0019]     This problem can be solved by a technique disclosed in an internet article, Hitachi TagmaStore Universal Storage Platform (URL: http://www.hds.com/pdf/wp168_tagmastore_virtualization.pdf).  
         [0020]     This technique allocates a part of the memory area of a cache memory to each server, which uses the allocated area exclusively.  
         [0021]     JP 2004-295790 A discloses a technique with which a part of the memory area of a cache memory that is allocated to one server can be reallocated to another server. This technique allows a server to have a part of the memory area of a cache memory that is allocated to another server when an application in the former server fails to meet a required performance level. With an additional portion of the memory area provided by another server, the application in the former server can now meet the required performance level.  
       SUMMARY  
       [0022]     However, according to the above prior art, a DBMS cannot recognize a change in how much capacity of the memory area of a cache memory is allocated (allocated amount capacity of the cache) to a server on which the DBMS operates. Accordingly, the DBMS makes an access plan for accessing a DB without taking into consideration a change in allocated cache amount. This prevents the DBMS from utilizing the allocated cache amount effectively and from improving the performance.  
         [0023]     An embodiment of this invention has been made in view of the problem described above, and it is therefore an object of this invention to provide a computer system that allows a DBMS to utilize its allocated cache amount effectively.  
         [0024]     According to the embodiment of this invention, there is provided a computer system including: at least one of database computers, in which a database management system operates; a storage system for storing a database operated by the database management system; and a management computer for managing the DBMS computer and the storage system. The storage system has a cache memory where data is temporarily stored and a physical disk drive where the database is stored. The management computer changes capacity of the cache memory which is allocated to the DBMS computer where the database management system operates, and instructs the database management system to change an access plan according to the change in amount of the cache memory allocated to the database computer.  
         [0025]     According to the embodiment of this invention, the DBMS can effectively use the memory area of the cache memory of the storage system. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0026]     The present invention can be appreciated by the description which follows in conjunction with the following figures, wherein:  
         [0027]      FIG. 1  is a block diagram of a computer system according to an embodiment of this invention;  
         [0028]      FIG. 2  is a block diagram of a DBMS server according to the embodiment of this invention;  
         [0029]      FIG. 3  is a block diagram of a storage system according to the embodiment of this invention;  
         [0030]      FIG. 4  is a block diagram of a management server according to the embodiment of this invention;  
         [0031]      FIG. 5A  is a configuration diagram of a DB schema information table provided in the DBMS server according to the embodiment of this invention;  
         [0032]      FIG. 5B  is a configuration diagram of a data area information table provided in the DBMS server according to the embodiment of this invention;  
         [0033]      FIG. 5C  is a configuration diagram of a DB file system information table provided in the DBMS server according to the embodiment of this invention;  
         [0034]      FIG. 5D  is a configuration diagram of a DBMS area information table provided in the DBMS server according to the embodiment of this invention;  
         [0035]      FIG. 6A  is a configuration diagram of a cache allocation management table provided in the storage system according to the embodiment of this invention;  
         [0036]      FIG. 6B  is a configuration diagram of a cache data management table provided in the storage system according to the embodiment of this invention;  
         [0037]      FIG. 7A  is a configuration diagram of an access plan information table provided in the management server according to the embodiment of this invention;  
         [0038]      FIG. 7B  is a configuration diagram of a storage cache management table provided in the management server according to the embodiment of this invention;  
         [0039]      FIG. 7C  is a configuration diagram of a storage cache allocation management table provided in the management server according to the embodiment of this invention;  
         [0040]      FIG. 7D  is a configuration diagram of a DBMS statistics information table provided in the management server according to the embodiment of this invention;  
         [0041]      FIG. 7E  is a configuration diagram of a configuration information table provided in the management server according to the embodiment of this invention;  
         [0042]      FIG. 7F  is a configuration diagram of a DBMS performance information table provided in the management server according to the embodiment of this invention;  
         [0043]      FIG. 8A  is an explanatory diagram of a query executed by a DBMS of the DBMS server according to the embodiment of this invention;  
         [0044]      FIG. 8B  is an explanatory diagram of an access plan made by the DBMS according to the embodiment of this invention;  
         [0045]      FIG. 9  is a flow chart for processing of updating the configuration information table and the DBMS statistics information table, which is executed by the management server according to the embodiment of this invention;  
         [0046]      FIG. 10  is a flow chart for cache access state notifying processing executed by the storage system according to the embodiment of this invention;  
         [0047]      FIG. 11  is a flow chart for processing of updating the storage cache management table of the management server according to the embodiment of this invention;  
         [0048]      FIG. 12  is an explanatory diagram of a cache memory reallocating processing of the management server according to the embodiment of this invention;  
         [0049]      FIG. 13  is an explanatory diagram of access plan changing processing of the management server according to the embodiment of this invention; and  
         [0050]      FIG. 14  is an explanatory diagram of an access plan change notification screen displayed by an output device of the management server according to the embodiment of this invention. 
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT  
       [0051]     An embodiment of this invention will be described below with reference to the accompanying drawings.  
         [0052]      FIG. 1  is a block diagram of a computer system according to an embodiment of this invention.  
         [0053]     The computer system has DBMS servers, each of which is denoted by  2000 , storage systems, each of which is denoted by  3000 , and a management server  1030 .  
         [0054]     The DBMS server  2000 , the storage system  3000  and the management server  1030  are connected to one another via a network  1020 . The network  1020  is, for example, a local area network (LAN). The network  1020  may have a network appliance such as a router.  
         [0055]     The DBMS server  2000  and the storage system  3000  are connected to each other via a network  1000 . The network  1000  is, for example, a Fibre Channel (FC) network. The network  1000  may have a network appliance such as an FC switch.  
         [0056]     The storage system  3000  has, as will be described later with reference to  FIG. 3 , a physical disk where a database (DB) is stored. There are two storage systems  3000  and  3000  in  FIG. 1 , but the computer system of this embodiment can have as many storage systems as necessary.  
         [0057]     The DBMS server  2000  executes, as will be described later with reference to  FIG. 2 , a database management system (DBMS). The DBMS is a program executed by the DBMS server  2000 , and controls a DB stored in the storage system  3000 . Controlling a DB includes updating the DB, searching the DB, creating a table, and defining a table. There are two DBMS servers  2000  and  2000  in  FIG. 1 , but the computer system of this embodiment can have as many DBMS servers as necessary.  
         [0058]     The management server  1030  manages, as will be described later with reference to  FIG. 4 , the DBMS server  2000  and the storage system  3000 .  
         [0059]     Specifically, the management server  1030  obtains, when detecting reallocation of a cache area of a cache memory in the storage system  3000 , an access plan from the DBMS server  2000  whose allocated amount capacity of the cache is changed. From the obtained access plan, the management server  1030  creates an access plan that is according to the newly allocated cache amount. The management server  1030  then instructs the DBMS server  2000  to switch to the created access plan. Receiving the instruction, the DBMS server  2000  employs the access plan designated. The DBMS server  2000  thus chooses an access plan that makes high-speed processing possible.  
         [0060]     The management server  1030  may be an independent computer, or may be a part of the DBMS server  2000  or of the storage system  3000 .  
         [0061]     The computer system may have a computer (client) that accesses the DBMS server  2000 .  
         [0062]      FIG. 2  is a block diagram of the DBMS server  2000  according to the embodiment of this invention.  
         [0063]     The DBMS server  2000  has a processor  2012 , a memory area  2016 , an Ether I/F  2015 , an FC I/F  2014 , and an output device  2013 .  
         [0064]     The devices constituting the DBMS server  2000  are interconnected via a communication path  2011 , which is an internal bus or the like. There are one Ether I/F  2015  and one FC I/F  2014  in  FIG. 2 , but the DBMS server  2000  may have plural Ether I/Fs and plural FC I/Fs.  
         [0065]     The processor  2012  executes programs stored in the memory area  2016  to perform various types of processing.  
         [0066]     The Ether I/F  2015  is an interface connected to an external device via the network  1020 . The Ether I/F  2015  uses an Ethernet protocol to communicate. External devices to which the Ether I/F  2015  is connected include the management server  1030 , the storage system  3000  and clients.  
         [0067]     The FC I/F  2014  is an interface connected to an external device via the network  1000 . The FC I/F  2014  uses a Fibre channel protocol to communicate. External devices to which the FC I/F  2014  is connected include the storage system  3000 .  
         [0068]     The output device  2013  is, for example, a display, and outputs various types of information.  
         [0069]     The memory area  2016  stores an operating system (OS)  2007 , a DBMS  2008 , a client program  2006 , a DB schema information table  5100 , a data area information table  5200 , a DB file system information table  5300 , a DBMS area information table  5400 , etc.  
         [0070]     The OS  2007  controls the overall management of the DBMS server  2000 . The OS  2007  includes DB file systems. A DB file system obtains a file from a DB stored in the storage system  3000 , and provides the obtained file to another program.  
         [0071]     The client program  2006  inquires, when receiving a data request from a client, of the DBMS  2008  about the requested data.  
         [0072]     The DBMS  2008  contains a plan creating manager  2009 , and controls a DB stored in the storage system  3000 . The plan creating manager  2009  creates an access plan upon receiving an inquiry from the client program  2006 .  
         [0073]     The memory area  2016  may store more than one DBMS  2008 . In this case, each DBMS  2008  is given a unique identifier.  
         [0074]     The DB schema information table  5100  shows, as will be described later with reference to  FIG. 5A , information on the logical configuration (DB schema) of a DB managed by the DBMS  2008 .  
         [0075]     The data area information table  5200  shows, as will be described later with reference to  FIG. 5B , information on a data area managed by the OS  2007 .  
         [0076]     The DB file system information table  5300  shows, as will be described later with reference to  FIG. 5C , information necessary for the OS  2007  to access a DB.  
         [0077]     The DBMS area information table  5400  shows, as will be described later with reference to  FIG. 5D , information on a physical disk of the storage system  3000  accessed by the DBMS  2008 .  
         [0078]      FIG. 3  is a block diagram of the storage system  3000  according to the embodiment of this invention.  
         [0079]     The storage system  3000  has a controller  3005 , a memory area  3004 , physical disks, each of which is denoted by  3006 , an Ether I/F  3007  and an FC I/F  3008 .  
         [0080]     There are one Ether I/F  3007  and one FC I/F  3008  in  FIG. 3 , but the storage system  3000  may have plural Ether I/Fs and plural FC I/Fs. There are four physical disks  3006 ,  3006 ,  3006  and  3006  in  FIG. 3 , but the storage system  3000  can have as many physical disks as necessary.  
         [0081]     The controller  3005  has the overall control over the storage system  3000 . The controller  3005  has a CPU and other components to perform various types of processing by executing programs stored in the memory area  3004 .  
         [0082]     The Ether I/F  3007  is an interface connected to an external device via the network  1020 . External devices to which the Ether I/F  3007  is connected include the management server  1030  and the DBMS server  2000 .  
         [0083]     The FC I/F  3008  is an interface connected to an external device via the network  1000 . External devices to which the FC I/F  3008  is connected include the DBMS server  2000 .  
         [0084]     The physical disk  3006  stores information including a DB. The DBMS server  2000  recognizes the physical disk  3006  as a logical unit. In other words, the DBMS server  2000  uses a logical unit number and an offset address to access data stored in the physical disk  3006 . An offset address is a relative address, which is unique only within the logical unit in question.  
         [0085]     The physical disk  3006  may have a RAID configuration. In this case, the DBMS server  2000  uses a logical unit number and a logical address to access data stored in the physical disk  3006 .  
         [0086]     The memory area  3004  is provided in a non-volatile memory device. The memory area  3004  contains an area used as a cache memory  3003 . Stored in the memory area  3004  are a cache allocation management table  8400 , a cache data management table  8500 , a control manager  3001 , and the like.  
         [0087]     The cache allocation management table  8400  shows, as will be described later with reference to  FIG. 6A , information on how the capacity of the cache memory  3003  is allocated.  
         [0088]     The cache data management table  8500  shows, as will be described later with reference to  FIG. 6B , information on data stored in the cache memory  3003 .  
         [0089]     The control manager  3001  retrieves, in response to a request from the management server  1030 , data stored in the physical disk  3006 , and stores the retrieves data in the cache memory  3003 .  
         [0090]      FIG. 4  is a block diagram of the management server  1030  according to the embodiment of this invention.  
         [0091]     The management server  1030  has a processor  1031 , a memory area  1034 , an Ether I/F  1033  and an output device  1032 . The devices constituting the management server  1030  are interconnected via a communication path  1035 , which is an internal bus or the like.  
         [0092]     There is one Ether I/F  1033  in  FIG. 4 , but the management server  1030  may have plural Ether I/Fs.  
         [0093]     The Ether I/F  1033  is an interface connected to an external device via the network  1020 . External devices to which the Ether I/F  1033  is connected include the DBMS server  2000  and the storage system  3000 .  
         [0094]     The output device  1032  is, for example, a display, and outputs various types of information.  
         [0095]     Stored in the memory area  1034  are a management manager  1050 , an access plan information table  7200 , a storage cache management table  7300 , a storage cache allocation management table  7400 , a DBMS statistics information table  7500 , a configuration information table  7600 , a DBMS performance information table  7700  and others.  
         [0096]     The management manager  1050  detects reallocation of a cache area of the cache memory  3003  in the storage system  3000 , and then instructs the DBMS  2008  to change an access plan. Details of processing of the management manager  1050  will be described later with reference to  FIGS. 12 and 13 .  
         [0097]     The access plan information table  7200  shows, as will be described later with reference to  FIG. 7A , information on an access plan created by the DBMS server  2000 .  
         [0098]     The storage cache management table  7300  shows, as will be described later with reference to  FIG. 7B , information on data stored in the cache memory  3003  of the storage system  3000 .  
         [0099]     The storage cache allocation management table  7400  shows, as will be described later with reference to  FIG. 7C , the history of reallocation of cache areas of the cache memory  3003  in the storage system  3000 .  
         [0100]     The DBMS statistics information table  7500  shows, as will be described later with reference to  FIG. 7D , information on a table and an index that are contained in a DB stored in the storage system  3000 .  
         [0101]     The configuration information table  7600  shows, as will be described later with reference to  FIG. 7E , information on a DB stored in the storage system  3000 .  
         [0102]     The DBMS performance information table  7700  shows, as will be described later with reference to  FIG. 7F , information on the performance of the DBMS  2008  in the DBMS server  2000 .  
         [0103]      FIG. 5A  is a configuration diagram of the DB schema information table  5100  provided in the DBMS server  2000  according to the embodiment of this invention.  
         [0104]     The DB schema information table  5100  holds information on a DB schema managed by the DBMS  2008 . The DB schema information table  5100  contains a schema ID  5101 , a schema name  5102 , a schema type  5103 , a data area ID  5104 , a schema size 5105 and a head offset address  5106 .  
         [0105]     The schema ID  5101  is a unique identifier indicating a DB schema managed by the DBMS  2008 . The schema name  5102  indicates the name of the DB schema identified by the schema ID  5101 . The schema type  5103  indicates the type of this DB schema, with “table”, “index”, or the like being stored as the schema type  5103 .  
         [0106]     The data area ID  5104  is a unique identifier indicating a data area where this DB schema is stored. The schema size 5105 indicates the size of the DB schema. The head offset address  5106  indicates a value at the head of the offset address of a part of the storage area of the physical disk  3006  where this DB schema is stored. A DB schema is stored in a part of the storage area of the physical disk  3006  in the storage system  3000 .  
         [0107]      FIG. 5B  is a configuration diagram of the data area information table  5200  provided in the DBMS server  2000  according to the embodiment of this invention.  
         [0108]     The data area information table  5200  holds information on a data area managed by the OS  2007 .  
         [0109]     The data area information table  5200  contains a data area ID  5201 , an area name  5202 , a DB file system name  5203  and an area size 5204. The data area information table  5200  holds as many records (entries) as the number of DB file systems included in the OS  2007 .  
         [0110]     The data area ID  5201  is a unique identifier indicating data area which the DBMS  2008  identifies. The area name is the name of the data area identified by the data area ID  5201 . The DB file system name  5203  indicates the name of a DB file system that manages this data area. The area size  5204  indicates the size of this data area.  
         [0111]      FIG. 5C  is a configuration diagram of the DB file system information table  5300  provided in the DBMS server  2000  according to the embodiment of this invention.  
         [0112]     The DB file system information table  5300  holds information used when the OS  2007  of the DBMS server  2000  reads or writes data. The DB file system information table  5300  contains a DB file system name  5301 , a logical unit number  5302  and a storage ID  5303 .  
         [0113]     The DB file system name  5301  indicates the name of a DB file system included in the OS  2007  of the DBMS server  2000 .  
         [0114]     The logical unit number  5302  is a unique identifier indicating a logical unit that is managed by the DB file system identified by the DB file system name  5301 .  
         [0115]     The storage ID  5303  is a unique identifier indicating a storage system to which the logical unit managed by this DB file system belongs. For example, World Wide Name (WWN) is stored as the storage ID  5303 .  
         [0116]      FIG. 5D  is a configuration diagram of the DBMS area information table  5400  provided in the DBMS server  2000  according to the embodiment of this invention.  
         [0117]     The DBMS area information table  5400  contains a DBMS ID  5401 , a storage ID  5402 , a logical unit number  5403 , and an offset address  5404 .  
         [0118]     The DBMS ID  5401  is a unique identifier indicating the DBMS  2008  operating on the DBMS server  2000 .  
         [0119]     The storage ID  5402  is a unique identifier indicating the storage system  3000  that has the physical disk  3006  whose storage area is used by the DBMS  2008  that is identified by the DBMS ID  5401 . The logical unit number  5403  is a unique identifier indicating a logical unit that is used by this DBMS  2008 . The offset address  5404  indicates the offset address of a part of the storage area of the physical disk  3006  that is used by this DBMS  2008 .  
         [0120]      FIG. 6A  is a configuration diagram of the cache allocation management table  8400  provided in the storage system  3000  according to the embodiment of this invention.  
         [0121]     The cache allocation management table  8400  shows how the capacity of the cache memory  3003  in the storage system  3000  is allocated.  
         [0122]     The cache allocation management table  8400  contains a cache allocated host ID  8401  and a cache address  8402 .  
         [0123]     The cache allocated host ID  8401  is a unique identifier indicating the DBMS server  2000  to which a part of the storage area of the cache memory  3003  (a cache area) in the storage system  3000  is allocated.  
         [0124]     The cache address  8402  indicates the address of a cache area (cache address) allocated to the DBMS server  2000  that is identified by the cache allocated host ID  8401 .  
         [0125]      FIG. 6B  is a configuration diagram of the cache data management table  8500  provided in the storage system  3000  according to the embodiment of this invention.  
         [0126]     The cache data management table  8500  shows the relation between data stored in the cache memory  3003  and data stored in the physical disk  3006 .  
         [0127]     The cache data management table  8500  contains a cache address  8501 , a logical unit number  8502 , and an offset address  8503 .  
         [0128]     The cache address  8501  indicates the address of a cache area where data is stored.  
         [0129]     The logical unit number  8502  is a unique identifier indicating a logical unit that stores the same data as the one stored in the cache area that is located at the address entered as the cache address  8501 . The offset address  8503  indicates the offset address of a part of the storage area of the physical disk  3006  that stores the same data as the one stored in this cache area.  
         [0130]      FIG. 7A  is a configuration diagram of the access plan information table  7200  provided in the management server  1030  according to the embodiment of this invention.  
         [0131]     The access plan information table  7200  contains a node plan name  7201 , a plan parent node name  7202 , node processing  7203 , an access data configuration  7204 , a processing order  7205 , and a node processing detail  7206 .  
         [0132]     The node plan name  7201  indicates the name of a node plan included in an access plan.  
         [0133]     The plan parent node name  7202  indicates the name of a parent node plan associated with the node plan that is identified by the node plan name  7201 . The node processing  7203  indicates what processing is performed by this node plan. The access data configuration  7204  indicates the name of the configuration of data accessed by this node plan.  
         [0134]     The processing order  7205  indicates an order in which this node plan is processed. The column of the node processing detail  7206  holds details of the processing performed by this node plan.  
         [0135]      FIG. 7B  is a configuration diagram of the storage cache management table  7300  provided in the management server  1030  according to the embodiment of this invention.  
         [0136]     The storage cache management table  7300  contains a storage ID  7301 , a cache address  7302 , a host ID  7303 , a DBMS ID  7304 , a hit count  7305 , a logical unit number  7306 , and an offset address  7307 .  
         [0137]     The storage ID  7301  is a unique identifier indicating the storage system  3000  whose cache memory  3003  stores data. The cache address  7302  indicates the address of a cache area where this data is stored.  
         [0138]     The host ID  7303  is a unique identifier indicating the DBMS server  2000  that uses the cache area located at the address entered as the cache address  7302 . The DBMS ID  7304  is a unique identifier indicating the DBMS  2008  that uses this cache area.  
         [0139]     The hit count  7305  indicates how many times the DBMS  2008  identified by the DBMS ID  7304  accesses this cache area.  
         [0140]     The logical unit number  7306  is a unique identifier indicating a logical unit that stores the same data as the one stored in this cache area. The offset address  7307  indicates the offset address of a part of the storage area of the physical disk  3006  that stores the same data as the one stored in this cache area.  
         [0141]      FIG. 7C  is a configuration diagram of the storage cache allocation management table  7400  provided in the management server  1030  according to the embodiment of this invention.  
         [0142]     The storage cache allocation management table  7400  contains a storage ID  7401 , a cache address  7402 , and an allocated host ID  7403 .  
         [0143]     The storage ID  7401  is a unique identifier indicating the storage system  3000  that has the cache memory  3003  whose cache area is reallocated.  
         [0144]     The cache address  7402  indicates the address of a cache area that is reallocated.  
         [0145]     The allocated host ID  7403  is a unique identifier indicating the DBMS server  2000  to which the cache area located at the address entered as the cache address  7402  is newly allocated through the reallocation.  
         [0146]      FIG. 7D  is a configuration diagram of the DBMS statistics information table  7500  provided in the management server  1030  according to the embodiment of this invention.  
         [0147]     The DBMS statistics information table  7500  contains a table/index name  7501 , a string name  7502 , a length  7503 , and an entry count  7504 .  
         [0148]     The table/index name  7501  indicates the name of a table or of an index that is contained in a DB stored in the storage system  3000 .  
         [0149]     The string name  7502  indicates the name of a string of key values of the table or index identified by the table/index name  7501 .  
         [0150]     The length  7503  indicates the data length of the string identified by the string name  7502 . The entry count  7504  indicates the count of entries of this string.  
         [0151]      FIG. 7E  is a configuration diagram of the configuration information table  7600  provided in the management server  1030  according to the embodiment of this invention.  
         [0152]     The configuration information table  7600  contains a host ID  7601 , a DBMS ID  7602 , a schema name  7603 , a schema type  7604 , a schema size  7605 , a data area ID  7606 , a head offset address  7607 , a logical unit number  7608 , and a storage ID  7609 .  
         [0153]     The host ID  7601  is a unique identifier indicating the DBMS server  2000 . The DBMS ID  7602  is a unique identifier indicating the DBMS  2008  operating on the DBMS server  2000 .  
         [0154]     The schema name  7603  indicates the name of a schema accessed by the DBMS  2008  that is identified by the DBMS ID  7602 . The schema type  7604  indicates the type of the schema identified by the schema name  7603 . “Table”, “index”, or the like is stored as the schema type  7604 . The schema size  7605  is the size of this schema.  
         [0155]     The data area ID  7606  is a unique identifier indicating a data area where this schema is stored. The head offset address  7607  indicates a value at the head of the offset address of a part of the storage area of the physical disk  3006  that stores this schema.  
         [0156]     The logical unit number  7608  is a unique identifier indicating a logical unit where this schema is stored. The storage ID  7609  is a unique identifier indicating the storage system  3000  where this schema is stored.  
         [0157]      FIG. 7F  is a configuration diagram of the DBMS performance information table  7700  provided in the management server  1030  according to the embodiment of this invention.  
         [0158]     The DBMS performance information table  7700  contains a DBMS ID  7701 , a host ID  7702 , throughput information  7703 , and a maximum disk queue length  7704 .  
         [0159]     The DBMS ID  7701  is a unique identifier indicating the DBMS  2008  operating on the DBMS server  2000 . The host ID  7702  is a unique identifier indicating the DBMS server  2000  on which the DBMS that is identified by the DBMS ID  7701  operates.  
         [0160]     The throughput information  7703  indicates the processing speed of this DBMS  2008 . The maximum disk queue length  7704  indicates a maximum value of the queue length of this DBMS  2008 . The length of a queue is measured by the count of processing that is waiting for its turn to access a DB.  
         [0161]      FIG. 8A  is an explanatory diagram of a query  98  executed by the DBMS  2008  of the DBMS server  2000  according to the embodiment of this invention.  
         [0162]     The query  98  is information with which a DB is requested of data.  
         [0163]     Receiving the query  98  from the client program  2006 , the DBMS  2008  analyzes the received query  98 . Based on the result of the analysis, the DBMS  2008  creates an access plan.  
         [0164]      FIG. 8B  is an explanatory diagram of an access plan made by the DBMS  2008  according to the embodiment of this invention.  
         [0165]     An access plan is composed of plural node plans denoted by  90  to  97 . The node plans  90  to  97  each contain a node number, what processing is performed, and an access data configuration.  
         [0166]     Examples of processing to combine plural tables include nested loop join, sort merge join, and hash join.  
         [0167]     In the access plan of  FIG. 8B , a table T 2  and a table T 3  are combined by hash join (the node plan  94 ). The table obtained as a result of the hash join is combined with a table T 1  by nested loop join (the node plan  91 ).  
         [0168]      FIG. 9  is a flow chart for processing of updating the configuration information table  7600  and the DBMS statistics information table  7500  which is executed by the management server  1030  according to the embodiment of this invention.  
         [0169]     The management manager  1050  of the management server  1030  obtains, from the DBMS server  2000 , information for updating the configuration information table  7600 .  
         [0170]     Specifically, information held in the DB schema information table  5100  of the DBMS server  2000  is obtained from the DBMS server  2000 . The manager  1050  then obtains, from the DBMS area information table  5400  of the DBMS server  2000 , information in an entry whose offset address  5404  has a head value that matches the head offset address  5106  of the information obtained from the DB schema information table  5100 .  
         [0171]     The configuration information table  7600  is updated based on the obtained information ( 101 ).  
         [0172]     To be specific, First, from which DBMS server  2000  those two pieces of information have been obtained is specified. Next, the identifier of the DBMS server  2000  specified is stored as the host ID  7601  in the configuration information table  7600 .  
         [0173]     Then the DBMS ID  5401  of the information obtained from the DBMS area information table  5400  is stored as the DBMS ID  7602  of the configuration information table  7600 . The schema name  5102  of the information obtained from the DB schema information table  5100  is stored as the schema name  7603  of the configuration information table  7600 .  
         [0174]     Next, the schema type  5103  of the information obtained from the DB schema information table  5100  is stored as the schema type  7604  of the configuration information table  7600 . The schema size  5105  of the information obtained from the DB schema information table  5100  is stored as the schema size  7605  of the configuration information table  7600 .  
         [0175]     Next, the data area ID  5104  of the information obtained from the DB schema information table  5100  is stored as the data area  7606  of the configuration information table  7600 . The head offset address  5106  of the information obtained from the DB schema information table  5100  is stored as the head offset address  7607  of the configuration information table  7600 .  
         [0176]     Next, the logical unit number  5403  of the information obtained from the DBMS area information table  5400  is stored as the logical unit number  7608  of the configuration information table  7600 . The storage ID  5402  of the information obtained from the DBMS area information table  5400  is stored as the storage ID  7609  of the configuration information table  7600 .  
         [0177]     The configuration information table  7600  is updated in the manner described above.  
         [0178]     The manager  1050  next obtains, from the DBMS server  2000 , information for updating the DBMS statistics information table  7500 .  
         [0179]     Specifically, information on a table or an index that is managed by the DBMS server  2000  in question is obtained. Information on a table or an index contains a table name or an index name, the name of a string of a key value, the length of the string, and the entry count of the string.  
         [0180]     The DBMS statistics information table  7500  is updated based on the obtained information ( 102 ).  
         [0181]     Then the processing of updating the configuration information table  7600  and the DBMS statistics information table  7500  is ended.  
         [0182]      FIG. 10  is a flow chart for a cache access state notifying processing which is executed by the storage system  3000  according to the embodiment of this invention.  
         [0183]     The control manager  3001  of the storage system  3000  monitors access to the cache memory  3003  within a given period of time, and collects access state (cache access state) information ( 131 ). How long the access is monitored may be set in advance or designated by an administrator.  
         [0184]     The cache access state information contains a cache address, a cache hit count, a host ID, a logical unit number, and an offset address.  
         [0185]     The cache address is the address of a cache area that is used by the DBMS server  2000 . The cache hit count is the number of times this cache area is accessed by the DBMS server  2000  (counter value information). The host ID is a unique identifier indicating the DBMS server  2000  that uses this cache area.  
         [0186]     The logical unit number is a unique identifier indicating a logical unit that stores the same data as the one stored in this cache area. The offset address is the offset address of a part of the storage area of the physical disk  3006  that stores the same data as the one stored in this cache area.  
         [0187]     Specifically, the control manager  3001  monitors the access to collect the cache address and the cache hit count. The control manager  3001  then chooses, from the cache allocation management table  8400 , an entry whose cache address  8402  matches the collected cache address. From the chosen entry, the cache allocated host ID  8401  is obtained. The obtained host ID  8401  is set as the host ID in the cache access state information.  
         [0188]     Next, the control manager  3001  chooses, from the cache data management table  8500 , an entry whose cache address  8501  matches the collected cache address. From the chosen entry, the logical unit number  8502  and the offset address  8503  are obtained. The obtained logical unit number  8502  and the offset address  8503  are set as the logical unit number and the offset address in the cache access state information. Cache access state information is collected in this manner.  
         [0189]     Next, the control manger  3001  sends the collected cache access state information to the management server  1030  ( 132 ). The cache access state notifying processing is hereby ended.  
         [0190]      FIG. 11  is a flow chart for processing of updating the storage cache management table  7300  of the management server  1030  according to the embodiment of this invention.  
         [0191]     First, the management manager  1050  is notified of a cache access state by the storage system  3000  ( 135 ).  
         [0192]     Then the manager  1050  updates the storage cache management table  7300  based on the received cache access state information ( 136 ).  
         [0193]     Specifically, which storage system  3000  has sent the cache access state information is specified. The manager  1050  then stores the identifier of the specified storage system  3000  as the storage ID  7301  of the storage cache management table  7300 .  
         [0194]     Next, the cache address contained in the received cache access state information is stored as the cache address  7302  of the storage cache management table  7300 . The host ID contained in the cache access state information is stored as the host ID  7303  of the storage cache management table  7300 .  
         [0195]     The manager  1050  then chooses, from the configuration information table  7600 , an entry whose head offset address  7607  matches a value at the head of the cache memory information contained in the received cache access state information. From the chosen entry, the DBMS ID  7602  is obtained. The obtained DBMS ID  7602  is stored as the DBMS ID  7304  of the storage cache management table  7300 .  
         [0196]     Next, the cache hit count contained in the received cache access state information is stored as the cache hit count  7305  of the storage cache management table  7300 . The logical unit number contained in the cache access state information is stored as the logical unit number  7306  of the storage cache management table  7300 . Next, the offset address contained in the received cache access state information is stored as the offset address  7307  of the storage cache management table  7300 .  
         [0197]     The storage cache management table  7300  is updated in the manner described above, and the updating processing is ended.  
         [0198]      FIG. 12  is an explanatory diagram of cache memory reallocating processing of the management server  1030  according to the embodiment of this invention.  
         [0199]     The management manager  1050  of the management server  1030  regularly obtains information on the performance of the DBMS  2008  from the DBMS server  2000  ( 140 ).  
         [0200]     The manager  1050  updates the DBMS performance information table  7700  based on the obtained information on the performance of the DBMS  2008 . Then the updated DBMS performance information table  7700  is consulted to judge whether the DBMS  2008  is having a performance trouble or not (141). The management manager  1050  judges that there is a performance problem in the DBMS  2008  when, for example, the number of times a trouble has occurred exceeds a threshold.  
         [0201]     One of causes of a performance problem is that the capacity of the cache memory  3003  that is allocated to the DBMS  2008  is not enough.  
         [0202]     Specifically, the controller  3005  of the storage system  3000  deletes data from the cache memory  3003  following an LRU algorithm or the like when there is no room left in the cache memory  3003  to store data accessed by the DBMS  2008 . Then the controller  3005  stores the data in the thus created free area of the cache memory  3003 .  
         [0203]     In the case where data accessed by the DBMS  2008  is not in the cache memory  3003 , the controller  3005  accesses the physical disk  3006 . This delays processing of the DBMS  2008  since accessing the physical disk  3006  takes time.  
         [0204]     In short, when the cache memory  3003  does not have enough free area left, the number of times the controller  3005  accesses the physical disk  3006  is increased. As a result, processing of the DBMS  2008  is delayed and a performance problem arises in the DBMS  2008 .  
         [0205]     When the DBMS  2008  does not have a performance problem, there is no need to reallocate cache areas of the cache memory  3003  and the processing returns to the step S 140 .  
         [0206]     On the other hand, when the DBMS  2008  has a performance problem, it is judged that cache areas of the cache memory  3003  have to be reallocated. Accordingly, the manager  1050  calculates how much capacity of the cache memory  3003  is necessary to solve the performance problem of the DBMS  2008  ( 142 ).  
         [0207]     For example, a method described in JP 2004-295790 A is employed to calculate how much capacity of the cache memory  3003  is necessary to solve the performance problem of the DBMS  2008 . Specifically, which data is accessed by the DBMS  2008  to solve the performance problem is determined from the past performance information of the DBMS  2008 . Then the manager  1050  calculates how much capacity of the cache memory  3003  is necessary to access the data determined. The thus calculated capacity is employed as a capacity of the cache memory  3003  that is necessary to solve the performance problem.  
         [0208]     The management manager  1050  next consults the storage cache management table  7300  to determine allocation of cache areas of the cache memory  3003  ( 143 ). How cache areas of the cache memory  3003  are allocated is determined such that the calculated capacity of the cache memory  3003  is allocated to the DBMS  2008  that is having a performance problem.  
         [0209]     For instance, the management manager  1050  allocates cache areas of the cache memory  3003  such that a cache area where data that has been accessed by the DBMS  2008  and is no longer needed is stored is allocated to the DBMS  2008  that is having a performance problem.  
         [0210]     Specifically, the management manager  1050  extracts the storage ID  7301 , the cache address  7302 , a logical unit number  7306 , and the offset address  7307  in an order of entry of the storage cache management table  7300 .  
         [0211]     The manager  1050  next chooses, from the configuration information table  7600 , an entry whose logical unit number  7608  matches the extracted logical unit number  7306 , and whose head offset address  7607  matches a value at the head of the extracted offset address  7307 . From the chosen entry, the schema name  7603  is extracted.  
         [0212]     Thus obtained is the schema name of data stored in a cache area that is determined by the extracted storage ID  7301  and cache address  7302 .  
         [0213]     Access information of the DBMS  2008  is obtained next. The access information contains the storage ID, logical unit number, and offset address of a part of the storage area of the physical disk  3006  that is accessed by the DBMS  2008 .  
         [0214]     The obtained access information and the access plan information table  7200  are consulted to specify, from an access plan, where the DBMS  2008  is currently accessing.  
         [0215]     Based on the specified location, the manager  1050  judges whether or not the DBMS  2008  has already accessed the data stored in the cache area that is determined by the extracted storage ID  7301  and cache address  7302 . Here, once accessed by the DBMS  2008 , data is regarded as no longer needed.  
         [0216]     Then the manager  1050  allocates cache areas of the cache memory  3003  such that a cache area where data that is no longer needed is stored is preferentially allocated to the DBMS  2008  where a problem has occurred. In other words, the cache area that is determined by the extracted storage ID  7301  and cache address  7302  is preferentially allocated to the DBMS  2008  that is having a performance problem.  
         [0217]     The management manager  1050  may also determine allocation of cache areas of the cache memory  3003  based on the access count of a cache area.  
         [0218]     Specifically, the following processing is repeated until a capacity necessary to solve a performance problem is allocated to the DBMS  2008 .  
         [0219]     First, entries are chosen from the storage cache management table  7300  in ascending order of the hit count  7305 . From each entry chosen, the storage ID  7301  and the cache address  7302  are extracted.  
         [0220]     Then a cache area that is determined by the extracted storage ID  7301  and cache address  7302  is allocated to the DBMS  2008  that is having a performance problem.  
         [0221]     An example is given in which a capacity of the cache memory  3003  that is necessary to solve the performance problem is 100 MB. In this case, the management manager  1050  allocates a cache area for which “1” is entered as the hit count  7305  in the storage cache management table  7300 . Then the manager  1050  judges whether or not the total capacity of all cache areas for which “1,” is entered as the hit count  7305  in the storage cache management table  7300  is smaller than 100 MB. When the total capacity is smaller than 100 MB, the manager  1050  adds, to cache areas to be allocated to the DBMS  2008 , a cache area for which “2” is entered as the hit count  7305  in the storage cache management table  7300 . In this way, the hit count  7305  of a cache area to be allocated is incremented by 1. This enables the management manager  1050  to allocate a cache area storing data that is accessed less frequently to the DBMS  2008  that is having a performance problem.  
         [0222]     Here, cache areas are allocated to the DBMS  2008  in ascending order of data access frequency. Allocation of cache areas of the cache memory  3003  may be determined such that a cache area storing data whose access frequency is equal to or larger than a threshold is not allocated to the DBMS  2008 .  
         [0223]     Once allocation of cache areas of the cache memory  3003  is determined in the manner described above, the manager  1050  instructs the storage system  3000  to reallocate cache areas as determined ( 144 ). Then the manager  1050  returns to the step S 140  to repeat this processing.  
         [0224]      FIG. 13  is an explanatory diagram of access plan changing processing of the management server  1030  according to the embodiment of this invention.  
         [0225]     The management manager  1050  of the management server  1030  waits for a notification of an access plan from the DBMS  2008  of the DBMS server  2000  ( 111 ).  
         [0226]     The DBMS  2008  creates an access plan and, before executing the access plan, sends the access plan to the management server  1030 .  
         [0227]     Receiving the access plan from the DBMS  2008  ( 112 ), the management manager  1050  judges whether or not cache areas of the cache memory  3003  have been reallocated ( 113 ). Specifically, the manager  1050  judges that cache areas of the cache memory  3003  have been reallocated when there is a new entry added to the storage cache allocation management table  7400 .  
         [0228]     When it is judged that cache areas of the cache memory  3003  have not been reallocated, there is no need to change the current access plan and the manager  1050  returns to the step S 111 .  
         [0229]     On the other hand, when it is judged that cache areas of the cache memory  3003  have been reallocated, the storage cache management table  7300  is consulted to obtain how much capacity of the cache memory  3003  is currently allocated to the DBMS  2008  in question (current allocation amount). Similarly, how much capacity of the cache memory  3003  has been allocated to this DBMS  2008  prior to the reallocation of cache areas of the cache memory  3003  (past allocation amount) is obtained.  
         [0230]     The management manager  1050  then compares the obtained current allocation amount against the obtained past allocation amount to judge whether the cache allocated amount of this DBMS  2008  is increased or reduced ( 114 ).  
         [0231]     When judging that it is an increase in cache allocated amount, the manager  1050  analyzes the received access plan to judge whether joining processing contained in the received access plan is of the type that uses a work file or not (115).  
         [0232]     Specifically, the management manager  1050  judges whether or not processing that uses a work file is stored as the node processing  7203  in the access plan information table  7200 . An example is given in which hash join or sort merge join is processing that uses a work file. In this case, the management manager  1050  judges whether or not hash join or sort merge join is stored as the node processing  7203  in the access plan information table  7200 .  
         [0233]     When joining processing contained in the access plan is of the type that uses a work file, there is no need to change the access plan and the manager  1050  returns to the step S 111 .  
         [0234]     On the other hand, when joining processing contained in the access plan is processing that does not use a work file, the manager  1050  obtains how much capacity of the cache memory  3003  is necessary in executing the joining processing that uses a work file.  
         [0235]     Specifically, a necessary capacity is obtained based on characteristics of the respective types of joining processing. For instance, hash join, which uses a work file, is characterized by reading all corresponding entries of tables to be combined, creating a hash table from the read data with the use of a work file, and performing joining processing.  
         [0236]     The management manager  1050  compares the obtained necessary capacity against the current allocation amount to judge whether or not the DBMS  2008  is capable of carrying out joining processing that uses a work file ( 116 ). Specifically, the DBMS  2008  is judged as being capable of executing joining processing that uses a work file when the necessary memory capacity is equal to or larger than the current allocation amount.  
         [0237]     When the DBMS  2008  is judged as being incapable of executing joining processing that uses a work file, the access plan does not need to be changed and the manager  1050  returns to the step S 111 .  
         [0238]     On the other hand, when the DBMS  2008  is judged as being capable of executing joining processing that uses a work file, the manager  1050  instructs to change the access plan. Specifically, the manager  1050  instructs to switch the joining processing that is contained in the access plan received in the step S 112  to joining processing that uses a work file ( 117 ).  
         [0239]     The management manager  1050  next notifies the administrator of the change of access plan. Specifically, the manager  1050  has the output device  1032  of the management server  1030  display an access plan change notification screen. The manager  1050  then returns to the step S 111 .  
         [0240]      FIG. 14  is an explanatory diagram of the access plan change notification screen displayed by the output device  1032  of the management server  1030  according to the embodiment of this invention.  
         [0241]     The access plan change notification screen is used to notify the administrator that the access plan of the DBMS server  2000  has been changed. With this screen, the administrator knows a change of access plan of the DBMS server  2000 .  
         [0242]     Now, back to  FIG. 13 , when judging in the step S 114  that there is a reduction in cache allocation amount, the management manager  1050  analyzes the received access plan to judge whether joining processing contained in the received access plan is of the type that uses a work file or not ( 118 ).  
         [0243]     When the joining processing contained in the access plan is of the type that does not use a work file, there is no need to change the access plan and the manager  1050  returns to the step S 111 .  
         [0244]     On the other hand, when the joining processing contained in the access plan is of the type that uses a work file, the manager  1050  judges whether the DBMS  2008  is capable of executing this joining processing or not ( 119 ).  
         [0245]     When the DBMS  2008  is judged as being capable of executing the joining processing that uses a work file, there is no need to change the access plan and the manager  1050  returns to the step S 111 .  
         [0246]     On the other hand, when the DBMS  2008  is judged as being incapable of executing the joining processing that uses a work file, the manager  1050  instructs to change the access plan. Specifically, the manager  1050  instructs to switch the joining processing that is contained in the access plan received in the step S 112  to joining processing that does not use a work file ( 120 ).  
         [0247]     The management manager  1050  next notifies the administrator of the change of access plan. Specifically, the manager  1050  has the output device  1032  of the management server  1030  display the access plan change notification screen of  FIG. 14 . The manager  1050  then returns to the step S 111 .  
         [0248]     In this embodiment, the DBMS  2008  executes an access plan only after sending the access plan to the management manager  1050 . Receiving the access plan, the management manger  1050  instructs the DBMS  2008  to change the access plan according to a change in amount of cache offset allocated to the DBMS  2008 .  
         [0249]     The management manager  1050  may also obtain an access plan that is being executed by the DBMS  2008  and instruct the DBMS  2008  to change the obtained access plan.  
         [0250]     According to this embodiment, upon detection of a performance problem in the DBMS  2008 , the management server  1030  reallocates cache areas of the cache memory  3003  of the storage system  3000 . The management server  1030  then instructs the DBMS  2008  to change an access plan executed by the DBMS  2008  according to a change in amount of cache allocated to the DBMS  2008 . The DBMS  2008  can thus switch to an access plan that makes high-speed processing possible.  
         [0251]     While the present invention has been described in detail and pictorially in the accompanying drawings, the present invention is not limited to such detail but covers various obvious modifications and equivalent arrangements, which fall within the purview of the appended claims.