Remove the performance of a large table or several small tables.

I have a table with 30 million lines, that is used in a statistic application developed in home treatment.

In the process, there is an application that will scan old records and then remove them from the database.

I'm looking for a way to improve it, and I am currently faced with alternatives:

Option #1
Separate the old records into several smaller tables, and then run several copies of the application, a single instance of the application by the smaller table.

Option #2
Use additional criteria to when choosing the rows of the table (which would be indexed on), an execution mulltiple of copies of the application based on the criteria.

From a logistical point of view, I'd prefer Option #2, my only concern with him is what's performance comparrison between:

50 processes Delete form 50 small individual tables with 100,000 rows in each
vs
50 to a table with more than 30 million lines removal process

Anyone has any experience on a preview?

We use an instance of Oracle 9i, no partitioning.

Unfortunately I don't have a lot of control in the application or make major changes to Oracle.

940507 wrote:
It redundant seams, one of the reasons why I prefer Option 2, using additional criteria...

I just need to make sure that when 20 process attempts to remove it from the same table with 30 + million lines, the contetion on the updating of the table, index... will not introduce a point of suffocation.

This can vary widely based on the distribution of data and model of data access. Oracle accesses data in blocks, so if someone updates an another line of the block while you delete, you could get a transaction wait. For playback from your deletion, Oracle is good, not blocking, but compromise can be a lot of waiting. If your data in the table such as two of your processes to remove from the same block, you could come back here crying on the performance and have people laugh design.

Rather than the mud things with more java spawning process, you may need to perform these deletions by a single stored procedure with very specific criteria. Then, rather that dealing with the issues of contention, you serialize everything to go as soon as possible and reduce to a minimum the block copy and cancel demand to keep multiuser. Oracle is biased in favor of adding data instead of delete, add will always be potentially more fast-able.

Think about this: http://jonathanlewis.wordpress.com/2011/04/19/more-cr/

Tags: Database

Similar Questions

  • Remove the extra white column of table of FY

    How to remove the extra space of af: table at the end?

    thnks

    to control the width of the table:
    Set the style class: AFStretchWidth
    and the value of columnStretching to last (or choose any column)

    to control the height
    Set the style inline to height: 154px; (change the number you need)

  • What are the causes my screen to instantly display several small pages?

    What are the causes my screen to instantly display several small pages?

    Your username appears to be rather ironic.

    Given the richness of the information you provided, I guess, whatever the version of Pages that you use, you've opened the model selector.

    Peter

  • How do I remove the filter from column of table without QueryEvent

    Hi all

    With the help of JDev 12.1.3.

    I have a table that contains a list of customers and suppliers like so.  Auto Repair Bob is a client.  Chips R Us is a seller.

    Name                | TypeKey (foreign key to the Table of Type) | Unique ID

    Auto repair Bob C 1

    Quickie Mart C 2

    R chips us V 3

    Let's say that I filter on 'V' through the user interface by selecting a choice selection of the column in the table.  Now only chips R Us opens.

    Name                | MasterTypeKey | Unique ID

    R chips us V 3

    Now, let's say that I want to remove my filter I can do another business process programmatically.  How to do that without requiring a QueryEvent and so to refresh a page?  I have been searching the various view classes of being variable Manager and have located the variable I need to remove it, but I'm not sure how to let him go.

            // get the query in it's current state
            String lQuery = bpIterator.getViewObject().getQuery();
            //get Valriables
            VariableValueManager lEnsureVariableManager = bpIterator.getViewObject().ensureVariableManager();
            Variable[] lVariables = lEnsureVariableManager.getVariables();
            int lCount = lEnsureVariableManager.getVariableCount();
            // Dump query
            System.out.println("---query--- " + lQuery);
            // if variables found dump them
            if (lCount > 0){
                System.out.println("---Variables:");
                for (int ii = 0; ii < lCount; ii++){
                    Object lObject = lEnsureVariableManager.getVariableValue(lVariables[ii]);
                    System.out.println("  --- Name: " + lVariables[ii].getName() + " Value: " +
                                       (lObject != null ?  lObject.toString() : "null"));
                }
            }  
    

    Makes me

    ---query--- SELECT BusinessPartners.COMPANY_ACCOUNT_ID,       BusinessPartners.MASTER_TYPE_KEY,         BusinessPartners.NAME,         BusinessPartners.BUSINESS_PARTNER_REF_KEY,      FROM BUSINESS_PARTNERS BusinessPartners WHERE ( ( ( (UPPER(BusinessPartners.MASTER_TYPE_KEY) = UPPER(:vc_temp_1) ) ) ) ) AND BusinessPartners.COMPANY_ACCOUNT_ID = :Bind_CompanyAccountId ORDER BY BusinessPartners.NAME
    ---Variables:
      --- Name: vc_temp_1 Value: C
      --- Name: pCompanyAccountId Value: null
    

    I am trying to get vc_temp_1 is deleted or to accept any value, but when I write what follows I get an error message "missing parameter IN or OUT."

    lEnsureVariableManager.removeVariable("vc_temp_1");
    

    Any ideas on how I can remove the filter on my view object?

    It cannot work without running the query again. As you see that the filter is running a query make the vo is not all data.even if you delete the variable filter, that you do not get the data from the database you need to show.

    You can reset the filter (see https://tompeez.wordpress.com/2013/08/06/jdev-12c-how-to-reset-a-filter-on-an-aftable-the-12c-way/) but you must run the query again to the corresponding data.

    Timo

  • Button to remove the CURRENT row in a table

    This test document has a table that works for most as I want, but the buttons Remove line always delete the second line , regardless of the button remove a row is clicked. The code is:

    Table1.Row1.instanceManager.removeInstance (1);

    How can I change this so that if you click on the button Delete line 5 (for example), it removes the 5 line, not of rank 2. It always clears rank 2, regardless of the button is clicked.

    Also, after I line is deleted, how can I get the lines of re - number automatically? The code for the automatic numbering is:

    this.rawValue = this.parent.index + 1;

    I tried to use this code:

    var number = detail.instanceManager.count;

    Detail.index + 1;

    numbers for automatic (by this blog entry by BR001), but I could never work on my table, although it works very well in his example. In the example of BR001, there a button Delete by rank and it always removes the line it is and it always automatically renumbers. I would use his method, but I spent hours trying to figure out where I am not to follow his example.

    Hello

    OK, your script will always clear the 2. instance as the removeInstance (1) simply means to delete the instance 1.

    You must keep in mind that all nodes have numbers index starting at 0.

    So the first instance of Row1 is addressed with Row [0], the second with the row [1]... the tenth line [9].

    To remove the current instance, you can use the button Delete as point of reference.

    This point of reference you're going upward in the tree of nodes to find the line desired.

    Table1.Row1.instanceManager.removeInstance(this.parent.parent.index);
    

    It = object current i.e. Button2

    parent = parent of Button2 which is Subform1

    parent = parent Subform1 which is Row1

    index = the number of the line pending

    OK, to keep the number of rows to update, you must use your line indexChange event (just add it after you existing script shading line).

    simple2.rawValue = this.index + 1;
    
  • How autoextend affects the performance of a large data load

    I do a little reorganisation on a data warehouse, and I need to move almost 5 to a value of tables and rebuild their indexes. I create a tablespace por each month, using BIGFILE tablespaces and assigning to their 600GO, which is the approximate size of the tables for each month. Just space allocation process takes a long time, and I decided to try a different approach and replace the AUTOEXTEND ON NEXT 512 M data file, and then run the ALTER TABLE MOVE command to move the tables. Is the Oracle 11 g Release 2 database, and it uses ASM. I was wondering what would be the best approach between these two:

    1. create the tablespace with AUTOEXTEND OFF, set it to 600GO and then run the command ALTER TABLE MOVE. The space would be enough for all the tables.

    2. create the tablespace with AUTOEXTEND ON and without affecting more than 1 GB, run the command ALTER TABLE MOVE. The diskgroup has enough space for the expected size of the storage space.

    With the first approach my database takes 10 minutes, moving from each partition (there is one for each day of the month). Would that number be affected dramatically if the database must be an AUTOEXTEND each 512 MB?

    If you measure the performance as the time required to assign the initial data to 600GO file more time to load and compare this to allocate a small file and to load, leaving the autoextend data file, it is unlikely that you will see a noticeable difference. You will get a variation much more just to move 600 GB you will lose waiting on the database to expand. If there is a difference, affect the whole of the file at the front will be slightly more efficient.

    More likely, though, is that you don't count the time required to assign the initial 600GO data file since it is something that can be done long in advance. If you do not count this year, then distribute the entire file at the front will be much more effective.

    If you need less than 600 GB, on the other hand, allocating the entire file at once can lose very little space. If it is a matter of concern, it may be wise to compromise and to allocate a 500 GB file initially (assuming it's a lower limit of reasonable size you actually need) and let the file into pieces of 1 GB. This is not the most effective approach and you can waste up to a GB of space, but maybe it's a reasonable compromise.

    Justin

  • How to remove the extra space between two Table HTML

    Hello

    I wrote a code for printing costs. But there is more space between two Table Html, how I can remove it.

    Please run that Code

    Start

    HTP.p (')
    < html >
    (< body > ');

    HTP.p (')
    < TABLE align = "left" width = "500" cellspacing = "0" cellpadding = "0" border = "1" >
    < tr > < td align = 'right' white-space: nowrap; > Ph-2201751 < table >
    < td > < table >
    < /tr >
    < tr > < td align = "center" white-space: nowrap; > < B > < table > < /B > SATYAM MODERN PUBLIC SCHOOL
    < td > < table >
    < /tr >
    < b >
    < td align = "center" white-space: nowrap; > < i > < H3 > (AFFILIATED to THE CBSC, NEW DELHI CODE No. 53544) < / H3 > < /I > < table >
    < td > < table >
    < /tr >
    < tr > < td align = "center" white-space: nowrap; > new colony Braham, - 131001 (h) < table >
    < td > < table >
    < /tr >
    < tr > < td align = "center" white-space: nowrap; > RECEPTION COSTS < table >
    < td > < table >
    < /tr >
    < /table >
    < TABLE width = "500" cellspacing = "0" cellpadding = "0" border = "1" >
    < b >
    < td width = "100" white-space: nowrap; > receipt no.: < table >
    < td width = "100" white-space: nowrap; > Date received: < table >
    < /tr >
    < b >
    < td width = "100" white-space: nowrap; > name: < table >
    < td width = "100" white-space: nowrap; > father name: < table >
    < /tr >
    < b >
    < td width = "100" white-space: nowrap; > class & s: < table >
    < td width = "100" white-space: nowrap; > A/C No. : < table >
    < /tr >
    < b >
    < td width = "100" white-space: nowrap; > from: < table >
    < td width = "100" white-space: nowrap; > to: < table >
    < /tr >

    (< /table > ');
    HTP.p (')
    < / body >
    (< / html > ');
    end;


    Thank you

    Ed

    Hello

    HTML is valid, that your code print?

    
    

    Wouldn't be as below?

    
    

    BR, Jari

    Published by: jarola on December 18, 2009 15:22
    I test your code
    http://Apex.Oracle.com/pls/OTN/f?p=40323:25
    I can't see any extra space between the tables

  • Can I remove the spaces between Booleans in table 2D?

    Hi all

    I created a table 2D Boolean buttons. But there are still spaces between the 2 buttons (see picture below). I want my buttons are near others. I tried the custom control, but was not getting rid of this problem. So, is there a way to fix this? If I want to change the color of the button programmatically, should BTW, I Xcontrol to do this? Thank you!

    I use lv 8.5.

    Best wishes

    Bo

    foolooo wrote:

    Hi all

    I created a table 2D Boolean buttons. But there are still spaces between the 2 buttons (see picture below). I want my buttons are near others. I tried the custom control, but was not getting rid of this problem. So, is there a way to fix this? If I want to change the color of the button programmatically, should BTW, I Xcontrol to do this? Thank you!

    I use lv 8.5.

    Best wishes

    Bo

  • How to remove the zeros trailng in my table

    Hai

    I had a serious problem

    My name from the table called nrgp_main

    Here nrgpno said (8) tank I changed as 10 by mistake and I update twice

    the number is like this 003800001 I need to cut the first "0" and update


    Thanks and greetings

    Srikkanth

    Srikkanth.M wrote:
    Hai

    I had a serious problem

    My name from the table called nrgp_main

    Here nrgpno said (8) tank I changed as 10 by mistake and I update twice

    the number is like this 003800001 I need to cut the first "0" and update

    Thank you & best regards

    Srikkanth

    You can do it

    update nrgp_main set nrgpno = substr(nrgpno,2)
    

    Note: I'm assuming that all the line will have the first letter 0 in nrgpno.

  • The publication of large files in several small?

    Hello everyone.

    I have a project, almost 16 MB. It; quite large s and users must wait a while to get the tutorial.

    I tried this. I divided the porject in various projects such as 1. menu, 2. Description, 3. practice. and then I link the menu projeect description, convenient and so on. So it works very well! I think it is a good solution to stop the annoyance of students. Now, there's a small problem on this... THE TABLE OF CONTENTS. For each project, there is a table of contents.

    So, how can I do to get the same table of contents in all projects? or better yet, how can do to publish the entire project, but as streaming, I mean instead of loading the 16 MB that I want it to load deppending on the slide with the student. Is this possible?

    1 million thanks!

    Ben

    Hello

    There are a lot of variables involved here, such as Captivate version as well as the way in which you present to the table of contents.

    If you are using Captivate 3, perhaps explore the MenuBuilder application.

    If you are using Captivate 4 or 5, you might consider using the application of the aggregator.

    See you soon... Rick

    Useful and practical links

    Captivate wish form/Bug report form

    Certified Adobe Captivate training

    SorcererStone blog

    Captivate eBooks

  • My font too small in the text box, all screens, all is several small

    I find it difficult to read the text in the text box in Web page IE and firefox as well as any other window I open in my computer. I couldn't find the solution for this problem on the internet, including using microsoft and forums. Please don't suggest me IE uncheck options - move - visual blah blah or press on CTR and scrolling up, none of them are working. I think the problem in windows vista, but I can't find what caused it.

    Hello
    In Vista...

    Try a different screen resolution. Right-click on the desktop > personalize > display settings > resolution. A lower resolution will make everything bigger. Not every resolution will be usable - some likely to distort images or text. Make the tests until you find the resolution that works for you.

    Hope this helps,
    Don

  • How to split large files into several small files

    MS7

    I have a big file (20 GB) I want multi folders to back up on a DVD.

    A few quick options-
    -You can either make new folders in the same location as the folder that you want to reduce the size of,.
    EG - C:\ YourUsername\My Documents\
    or make new 'Sub-folders"in the files in the folder in question and to move towards these new records before
    the copy.
    - Or, you can create separate folders on the DVD and copy groups of files in these folders.

    You can also consider doing a disc external HARD for these past and future backups.

  • How to remove the 'files' in a table

    Hello!

    Is possible to remove the word "records" in a table when lines per Page is running? I only see numbers as... 1-25, 26-50...


    Thank you very much!!

    The text is controlled by kmsgTableViewRecordsInfo and kmsgTableViewRecordsInfoAll in reportgeneratorsmessages.xml. You make your own customizations, see:
    http://obiee101.blogspot.com/2008/09/OBIEE-setting-up-CustomMessages-folders.html

    Best regards, John
    http://obiee101.blogspot.com

  • Remove the NaN

    How can I remove the NaN in "output/input" table. Also, I need to display the top of the column of the table "200077670" as "2000776729".

    I generally use the following method. 1st replace NaN with 0 and the 2nd removes the NaN.

    Good luck.

  • Move the data from the partitions again tablespace - direct table filled by ETL

    Hello

    We have a large composite table date-range/hash partitioned table (using time partitioning 11.2.0.3 range)

    1 partition for each month and each such partition 4 under separate partitions.

    We want to move some data from most significant storage but also direct table and inserted in all the days as part of the data warehouse and large table want to ensure

    operations below result in errors in the data loading procedure

    Suppose also should not take long to run lines 40 million or more each month.

    Select *.

    Of user_tab_partitions

    Where table_name = 'CUSTOMER_TRANSACTION '.

    And nom_partition like 'SYS % '.

    1. (1) Alter table retailer_transaction and rename partition < nom_partition > CUST_PART_ < YYYYMM >

    1. (2) tablespace create dedicated for the month of the affected partition

    1. ((3) alter table retailer_transaction move tablespace subpartition < sys... > < partition_tablespace > created in 2) above

    ALTER table retailer_transaction change the default attributes for the partition < CUST_PART < YYYYMM > < tablespace in 2 above > tablespace)

    4 global index which would eventually rebuild afterwards due to the transition if movement makes no valid.

    Several local bitmap indexes that belong to partitions.

    Thoughts?

    Thank you

    I agree in a good store of data, everything should be according to the best practices ETL or guideline. I guess it is a FACT table, because it's big enough. A method that I can share (followed in the real world big DW) is "ELP" IE Partition Exchange loading. You can find the basic architecture of the Internet.

    The basic architecture is as

    The source (in your case partitioned) Table--> (unpartitioned) intermediate Table--> Table possible target (partitioned)--> the cleaning activities (and overtime).

    You can use any ETL tool for this (I won't mention any other reasons).

    Later, you can delete the original table and use that new table as your FACT table, your application will be available all the time. There are drawbacks as most uses of double-spaced, other than normal ETL these work will take certain amount of resources so that other ALS etc. In addition, if you load a few current days during these activities you plan / program accordingly.

    Your demo is also fine, but regular ETL may fail because you rename the partitions (some uses of ETL tool partition name, in case you ever ELP) also unusable global indexes can cause failure (you have local too?).

Maybe you are looking for