Billy Pang
tuxedo_man at hotmail.com
Sun Jan 23 21:04:35 CST 2005
A database can have more than one filegroup. In EM, go to properties of user database. There is filegroups tab. Type name of new filegroup in space provided. >From: "John W. Colby" <jwcolby at colbyconsulting.com> >Reply-To: dba-sqlserver at databaseadvisors.com >To: dba-sqlserver at databaseadvisors.com >Subject: RE: [dba-SQLServer] Placing indexes in a specific file >Date: Sun, 23 Jan 2005 18:06:49 -0500 > >Can a database be spread over more than one filegroup? If so, then I >create >a file group that is just a single file, i.e. filegroup1 is datafile1, >filegroup2 is datafile2 etc. Then I can intentionally move a table to a >specific filegroup and get it in a specific file (disk) > >John W. Colby >www.ColbyConsulting.com > >Contribute your unused CPU cycles to a good cause: >http://folding.stanford.edu/ > >-----Original Message----- >From: dba-sqlserver-bounces at databaseadvisors.com >[mailto:dba-sqlserver-bounces at databaseadvisors.com] On Behalf Of Billy Pang >Sent: Sunday, January 23, 2005 4:51 PM >To: dba-sqlserver at databaseadvisors.com >Subject: RE: [dba-SQLServer] Placing indexes in a specific file > > >Hi John: > >To move a table from one filegroup to another, from EM, go into design view >of the table, bring up properties. on the first tab ("tables"), the third >last dropdown list is table filegroup. You can use this dropdown list to >move table from one filegroup to another. When you move tables from one >filegroup to another, this is what EM does is recreate a temporarily copy >of > >the table in the target filegroup, copy over data, drop old table and >rename > >new one. > >You can also move indexes from one filegroup to another via same way (ie. >table properties, indexes/keys, index filegroup dropdown list). > >Filegroups is just a way of organizing your data files. Filegroups consist >of physical data files. AFAIK, I don't think it is possible to put data of >a table in a specific physical data file (you can only put table into file >group. sql server does the rest). For performance reasons, in a single >filegroup, it is recommended that your physical data files are spread out >over multiple disks. That way all disks can work simultaneously at once to >get your data for a single table. > >Not sure what is the question "Do I need to create a new file on a new >drive, make it a new file group?, Then a new file on a second disk, making >it a different filegroup? Repeat until all files are in a different >filegroup? This all seems terribly cumbersome." I believe that you can >add > >more new data files (on a new disk) to an existing filegroup if you run out >of space on the disks on the existing data files. > >I don't remember how SQL Server allocates the data to the physical data >files. (ie. if filegroup has multiple data files, when you insert a record >into table within that filegroup, which data file is the record physically >stored in?). I don't have my sql server book with me so maybe somebody >else > >knows. > >HTH >Billy > > >From: "John W. Colby" <jwcolby at colbyconsulting.com> > >Reply-To: dba-sqlserver at databaseadvisors.com > >To: dba-sqlserver at databaseadvisors.com > >Subject: RE: [dba-SQLServer] Placing indexes in a specific file > >Date: Sun, 23 Jan 2005 15:49:17 -0500 > > > >Billy, > > > >Thanks for the response. Unfortunately I have already created most of > >the tables, and in fact already moved the data into most of the tables. > >I created the tables by simply opening the big table in design view, > >selecting the fields I wanted in the smaller table, copying the fields > >to the paste buffer, creating a new table and pasting the fields in to > >the new table and saved. I then opened QA, did a "Script object to new > >window as SELECT" , then "Script object to new window as INSERT", cut > >the select statement and > >pasted it into the VALUES clause of the insert, and finally ran the >insert > >statement. Quick and easy. The data gets moved from the BigTable to the > >new table in a couple of hours (depending on how many I run > >simultaneously). > >I then go in to each small table and build the indexes manually. Close >and > >save the table and the tables are built. > > > >As you can see I never used a SQL statement for any of this. It is > >very fast to do it manually, and that process of building the smaller > >tables is almost complete. I do still have to index about half of the > >smaller tables, but because of the data in them I don't create > >clustered indexes. > > > >Thus I need to know if I can take an existing table and move it to a > >specific file. I suppose I could a INSERT INTO NEWSmallTable SELECT * > >FROM SmallTable ON NEWFileGroup? That would copy the existing small > >tables I have created to the new file? > > > >I must admit that I am confused about the concept of FileGroup. AFAICT > >all of the files I currently have are in one file group. Thus using an > >On FILEGROUP would only get it into the set of 4 files, not into a > >specific file of that file group. > > > >Do I need to create a new file on a new drive, make it a new file > >group?, Then a new file on a second disk, making it a different > >filegroup? Repeat until all files are in a different filegroup? This > >all seems terribly cumbersome. > > > >John W. Colby > >www.ColbyConsulting.com > > > >Contribute your unused CPU cycles to a good cause: > >http://folding.stanford.edu/ > > > >-----Original Message----- > >From: dba-sqlserver-bounces at databaseadvisors.com > >[mailto:dba-sqlserver-bounces at databaseadvisors.com] On Behalf Of Billy > >Pang > >Sent: Sunday, January 23, 2005 2:57 PM > >To: dba-sqlserver at databaseadvisors.com > >Subject: RE: [dba-SQLServer] Placing indexes in a specific file > > > > > >Hi John: > > > >To improve disk I/O performance, place data of table and its indexes in > >separate data files (because less contention for disk resources given > >the way data is accessed on disk). > > > >The syntax for creating index on specific filegroup is: > > > >"BOL Syntax" > >CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name > > ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) > >[ WITH < index_option > [ ,...n] ] > >[ ON filegroup ] > > > >For example: > >create index ix_myindex on products(product_name) on > >secondary_file_group; > > > >To store the table in a specific data file, use the ON filegroup at the > >end of CREATE TABLE statement or create a clustered index of that table > >in the target filegroup. The data of a table resides in the same > >filegroup as its clustered index. > > > >Note: each db has default filegroup. If you don't specify specific > >filegroup when you create index/table, then that is where the > >index/table will reside. > > > >Always create your clustered index first before creating your > >nonclustered indexes of a table. This is because physical key in > >nonclusterd indexes is composed of the clustered index key. If you > >create nonclustered index first, and then clustered index, the db will > >need to rebuild existing nonclusterd indexes of that table (argh!). > > > >Sometimes an existing index on a table helps speed up creation of other > >indexes on the table. > > > >HTH > > > >Billy > > > > >From: "John W. Colby" <jwcolby at colbyconsulting.com> > > >Reply-To: dba-sqlserver at databaseadvisors.com > > >To: dba-sqlserver at databaseadvisors.com > > >Subject: RE: [dba-SQLServer] Placing indexes in a specific file > > >Date: Sun, 23 Jan 2005 13:47:45 -0500 > > > > > >On the same note, is it possible to cause specific tables to be > > >placed in specific files? > > > > > >_______________________________________________ > >dba-SQLServer mailing list > >dba-SQLServer at databaseadvisors.com > >http://databaseadvisors.com/mailman/listinfo/dba-sqlserver > >http://www.databaseadvisors.com > > > > >_______________________________________________ >dba-SQLServer mailing list >dba-SQLServer at databaseadvisors.com >http://databaseadvisors.com/mailman/listinfo/dba-sqlserver >http://www.databaseadvisors.com > > > > >_______________________________________________ >dba-SQLServer mailing list >dba-SQLServer at databaseadvisors.com >http://databaseadvisors.com/mailman/listinfo/dba-sqlserver >http://www.databaseadvisors.com >