On Sun, May 31, 2009 at 11:00:48AM -0400, Jay Pipes wrote:
> There is, therefore, no need to have multiple implementations of the  
> INFORMATION_SCHEMA interface.  There is, however, a need to swap out the  
> storage backend of the INFORMATION_SCHEMA -- think: I_S stored in  
> InnoDB, I_S stored in memcached, etc.

I don't think having I_S have its own store is good....

it's really only VIEWs on top of data from other places. Currently:
- variables
- table and database metadata
        - db.opt
        - directories in data dir
        - files ending in '.dfe' that get parsed okay.
- loaded plugins
- loaded collations
- whatever else I've missed.

The main problem with the current implementation being comparitive speed
of SHOW DATABASES/SHOW TABLES versus SELECT * FROM
INFORMATION_SCHEMA.TABLES stemming from the materialisation of the view.

so, if we look at listing databases, this is what happens:

- my_dir loads contents of directory into memory
- make_db_list reads that contents, works out if it's a database, stores
it in an array of database names
- I_S code writes this to a HEAP table
- HEAP table gets too big, writes to temp MyISAM table
- query executes (listing databases) using the handler interface on the
MyISAM table.

Where what we really want is a handler interface to readdir(3) (and
stat()) that we can execute the query on directly.

Although what we really, really want (hint: it's not zigazig ha) is to
have that readdir and stat be pluggable with whatever we want (e.g. a
scan on an engine data dictionary).


So there isn't really storage backends for I_S - rather a bunch of them
will pull their data from other stores. No need for them to be pluggable
as they're rather specific.
-- 
Stewart Smith

_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to