IOT table in highly concurrent env
Hi All,
I have done some bench marking of IOT vs Heap tables and found that updates are lot faster on an IOT table. We will have select, update and inserts on the table we are considering, delete are probably rare - we will drop a partition when we want to delete rows during a maintanence window.
Does anyone see any issues using IOT table in a highly concurrent DML activity (OLTP) env? If so could you please share any experineces?
Thanks a lot,
Vissu
Hi All,
I have done some bench marking of IOT vs Heap tables and found that updates are lot faster on an IOT table. We will have select, update and inserts on the table we are considering, delete are probably rare - we will drop a partition when we want to delete rows during a maintanence window.
Does anyone see any issues using IOT table in a highly concurrent DML activity (OLTP) env? If so could you please share any experineces?
Thanks a lot,
Vissu
Similar Messages
-
High concurrent session in database
Hi expertise,
I have a core banking solution database of 9i. In db concurrent session is 1660 and active concurrent session is 70. Due to high concurrent session my ATM transaction are getting hampered. Please suggested me any workaround in this regards
Pinak918601 wrote:
Hi expertise,
I have a core banking solution database of 9i. In db concurrent session is 1660 and active concurrent session is 70. Due to high concurrent session my ATM transaction are getting hampered. Please suggested me any workaround in this regards
Insufficient data - what does 'hampered' mean, and what is the scale of the problem ?
Can you show us some indication of how you detect the issue and where you are seeing time lost.
I can make a few guesses about a highly concurrent ATM system:
<ul>
Bad coding could result in waits for TX locks in mode 6, although using IOTs (index organized tables) would make these TX mode 4
Unfortunate index design could result in wait for TX locks in mode 4 - particularly ITL waits and index leaf block split waits
Basic infrastructure issues could result in time lost on buffer busy waits
If you've implemented shared servers (formerly MTS) to cater for 1700 connections then you may be waiting for shared servers to become free
If you haven't implemented shared servers your (inactive) processes may still be causing CPU wastage problems at the O/S scheduler level.
</ul>
If the issue is largely the (fairly standard for this type of application) buffer busy waits issue then an investigation of hash partitioning may be appropriate.
Regards
Jonathan Lewis
http://jonathanlewis.wordpress.com -
Join fact table with higher dimension level
how do i join fact tables with higher dimension levels with discoverer?
fact with detail at level C
measure X
dimension with
D->C->B->A
E->C
level
A B C
1------1------1
2------2------1
3------2------1
join between fact X and dimension level C
X=3*C because of sum(X) in discoverer and 3xC in dimension
is there a way to get correct values for X without creating a dimension like
D->C
E->another way of asking this is whether you can create a summary table in Discoverer at a higher level than a dimension's fundamental grain. In other words - the summary examples in the documentation all describe leaving out one or more of your dimensions... they are either left in or completely taken out. But, some of the most effective summarization occurs when you summarize daily data to a monthly level. Assuming that I have a sales table (at a daily level, and a key value sales_date), and a table date_dim (primary key sales_date), I would like to create a summary sales_month_summary where the sales are grouped on month_year (which is a field in the sales_date table).
How is this done? I suspect that we can't use the date_dim table with the summary (due to the problems noted by the poster above). Do we have to create another table "month_dim"? Do we have to fold all of the desired date attributes (month, quarter, year) into the summary? Obviously we'd like to re-use all of the pertinent already existing date items (quarter, month, year, etc.), not recreate them over again, which would result in essentially two sets of items in the EUL. [One used for this month summary, and another used for the detail.]
I searched the forum - someone asked this same question back in 2000 - there was no answer provided.
The only other thought I have is to "snowflake" the date_dim into two tables and two folders, one at a date level, another at the month level. Then the detail tables can connect to date_dim (which is linked to month_dim), while the summary data can connect directly to month_dim. -
Select data from database tables with high performance
hi all,
how to select data from different database tables with high performance.
im using for all entries instead of inner joins, even though burden on data base tables is going very high ( 90 % in se30)
hw to increase the performance.
kindly, reply.
thnksAlso Check you are not using open sql much like distict order by group by , use abap techniques on internal table to acive the same.
also Dont use select endselect.
if possible use up to n rows claus....
taht will limit the data base hits.
also dont run select in siode any loops.
i guess these are some of the trics oyu can use to avoid frequent DATA BASE HITS AND ABVOID THE DATA BASE LAOD. -
10.2.0.3 high concurrency wait event
I have a new 64bit windows 10g 10.2.0.3 VM server doing nothing but spinning its wheels. I intalled Oracle on it Friday and when I checked it tonight I see it is getting high concurrency wait events. Looks like every 10 minutes concurrency goes up to about 35.0 (?seconds) and then goes back to 0 - up and down every few minutes. Just enough to hit the warning threashold.
I need this machine for a peoplesoft install on Monday morning.
Anyone have any ideas what this could be? I kinda know what concurrency is but not sure if it could be from hardware or software.
Didn't see any patches/bugs but I will continue to look.
Help, KathieWhat are the wait events as described in v$system_wait and v$session_event?
-
Show tables with high I/O in database oracle 10g
I need to know which are the tables with high daily transactions
how to identify them?I need to know which are the tables with high daily transactions
how to identify them?.
How* is anyone supposed to help when we don't know
a) Oracle version?
and
b) Operating System?
Take a look at DBA_TAB_MODIFCATIONS
and DBA_HIST_SEG_STAT (all of the DBA_HIST stuff if you have it).
Try and post more detail in future.
Paul... -
High Concurrent SQL query of DBSNMP user
OS Linux
DB 11.2.0.2
we have a 12 node RAC box on exadata. We are doing the monitoring through the OEM GRID. In the 12th node we see a high concurrent sql query owned by the DBSNMP user.The concurrency is about 98% and it the top query in that instance. Please suggest me what we shoud do to decrease it.
Below is the query
SELECT s.inst_id, s.name, i.instance_name
FROM gv$active_services s, gv$instance i
WHERE s.name = :p1 AND s.inst_id = i.inst_idHi,
We applied the patch 9482559 which was suggested by oracle for a different issue and after applying this patch the high concurrent dbsnmp sql issue is gone. -
Oracle Database 10g Release 10.2.0.1.0 - Production
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
we have iot table which has 7.7 million record ,in production environment and i need to modify one column of this table say "T"
i planned to
create new table "copy_T" with create table as select and
truncate "T" and
modify "T"
i inserted again all records from copy_T to T with
insert into T select * from copyT
what is the best approach for this case
Message was edited by:
JAA
Message was edited by:
JAACreate a temporary table with parallel execution and Truncate the old table ( better rename the table) and
Rename the temporary table to the required table name -
Hello everyone
On our particular database server, we run the Rebuild Index Task (Using classic Maintenance Plan Designer) every night. Running the script below, I saw that about 77 tables had an avg_fragmentation_in_percentage between 80% and 99% !!
SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName,
ind.name AS IndexName, indexstats.index_type_desc AS IndexType,
indexstats.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats
INNER JOIN sys.indexes ind
ON ind.object_id = indexstats.object_id
AND ind.index_id = indexstats.index_id
WHERE indexstats.avg_fragmentation_in_percent > 30--You can specify the percent as you want
ORDER BY indexstats.avg_fragmentation_in_percent DESC
I dont understand why these tables are highly fragmented after a daily index rebuild! Unless the users are doing heavy inserts/updates/deletes during the day.
Anyone has an idea of the possible causes of these results??
Thank you all in advanceHallo Efyuzegeekgurl,
this is a normal behaviour when your table is only a small one. The reason for that behaviour is the following:
The dmv sys.dm_db_index_physical_stats counts each page which is not located at the very next one of the same table as a "fragment". If the first data page is 1700 and the second one is located on 1705 SQL server will count it as a fragment.
The basic allocation algorithm of Microsoft SQL Server is that new data pages will be created in "mixed extents". An extent is a contigious line of 8 consecutive data pages. This is for historical reasons when storage was expensive and data should
use as much as possible of allocated storage.
If a new table will be created the very first 8 pages are not located one after the other but "could" be located on different extents. If your table has only 9 data pages than 8 pages will count as "fragmented" because of their non consecutive
allocation. After 8 pages have been allocated Microsoft SQL Server will ALWAYS use a full extent for the next 8 pages (and so on!).
To understand this behaviour use the following example which creates a table with a record length of 8K. The next command will create 10 records (which means 10 data pages).
CREATE TABLE dbo.foo
Id INT NOT NULL IDENTITY (1, 1),
c1 CHAR(8000) NOT NULL DEFAULT ('filler')
GO
SET NOCOUNT ON;
GO
INSERT INTO dbo.foo DEFAULT VALUES
GO 10
When you check the page allocation you'll find the first 8 data pages not in a consecutive row but "scrambled" into different pages:
SELECT database_id,
index_id,
partition_id,
allocation_unit_type_desc,
extent_page_id,
allocated_page_page_id,
is_mixed_page_allocation,
page_type_desc
FROM sys.dm_db_database_page_allocations
DB_ID(),
OBJECT_ID('dbo.foo', 'U'),
0,
NULL,
'DETAILED'
) AS DDDPA
WHERE
DDDPA.is_allocated = 1
ORDER BY
DDDPA.is_iam_page DESC,
DDDPA.page_level DESC;
GO
You will see that the first 8 pages are located in a MIXED extent. Although the pages are in a consecutive order in the extent 221112 it is not guaranteed!
You can see from the very first three records that they are not in a consecutive row stored.
Now the fragmentation of the data seems to be quite high because we have 4 breaks in the rows. If we compare this value to the "fragmentation in sys.dm_db_index_physical_stats we will see at least the same result:
SELECT index_type_desc,
alloc_unit_type_desc,
DDIPS.avg_fragmentation_in_percent,
DDIPS.fragment_count,
DDIPS.page_count,
avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats
DB_ID(),
OBJECT_ID('dbo.foo', 'U'),
NULL,
NULL,
'DETAILED'
) AS DDIPS;
So - just from my point of view - don't count only to the fragmentation in percent because if the table is to small it will ALWAYS be over 30%. Take more into account the density of the pages and - as all others have mentioned - the number of pages of the
index.
I would consider indexes with more or equal to 1.000 pages.
Another tip: Forget about the f... maintenance plans. These "plans" are not worth the time and money because you cannot control it in a more precise way. Have a look to the solution of Ola Hallengren and implement his solution - a great master
piece of index maintenance:
http://ola.hallengren.com
All the best to the community :)
MCM - SQL Server 2008
MCSE - SQL Server 2012
db Berater GmbH
SQL Server Blog (german only) -
Designing a table for high rate of concurrent inserts and selects...
I am looking for some recommendations on designing a table the will be inserted into from both nodes of a 2 node cluster quite heavily during peak hours when we are taking alot of orders. We are an online store and we are designing a table that will be used to hold product sku's for items that are placed in a shoppers cart at the same time and then we plan to use this table as a way of subtracting the inventory in this table as a minus in a view of our true nventory quantities?
Not sure if that was clear but basically this table will be getting hit heavily for inserts and at the same time we will be using the data in the table to select from it so we can subtract the shu's that exists in the table.
I am looking for techniques that maybe some of our guru's have implemented in this type of design in a rac environment that will help in the conncurrency that we are expectiing.
Should I be building my tables with the smallest block size available as to avoid hot block in the db buffer cache and also we are using a sequence to generate and ID on the table and I have set a large cache size on the sequence (5000).
We are planning on using ASSM table spaces with auto extent and segment space management as everthing we have read indicated that this is the best type of tablespace mgmt in RAC.
What other factors should I be considering.
any help or suggestions are greatly appreciated.
Thanks in advance.user520056 wrote:
I am looking for some recommendations on designing a table the will be inserted into from both nodes of a 2 node cluster quite heavily during peak hours when we are taking alot of orders. We are an online store and we are designing a table that will be used to hold product sku's for items that are placed in a shoppers cart at the same time and then we plan to use this table as a way of subtracting the inventory in this table as a minus in a view of our true nventory quantities?
Not sure if that was clear but basically this table will be getting hit heavily for inserts and at the same time we will be using the data in the table to select from it so we can subtract the shu's that exists in the table.
I am looking for techniques that maybe some of our guru's have implemented in this type of design in a rac environment that will help in the conncurrency that we are expectiing.
Should I be building my tables with the smallest block size available as to avoid hot block in the db buffer cache and also we are using a sequence to generate and ID on the table and I have set a large cache size on the sequence (5000).
We are planning on using ASSM table spaces with auto extent and segment space management as everthing we have read indicated that this is the best type of tablespace mgmt in RAC.
What other factors should I be considering.
any help or suggestions are greatly appreciated.
Thanks in advance.See my .sig for other questions you should answer - OS, DB (version &c.),
CPU/RAM/Disk...
If you're running this on a 386 with 16 MB of RAM with on HDD, then you could
have problems - if you're running it on something different, well that changes
the possible answers.
Paul...
When asking database related questions, please give other posters
some clues, like OS (with version), version of Oracle being used and DDL.
Other trivia such as CPU + Disk configuration might also be useful.
The exact text and/or number of error messages is useful (!= "it didn't work!"). Thanks.
Furthermore, as a courtesy to those who spend time analysing and attempting to help,
please do not top post and do try to trim your replies! -
Temporary table used in concurrent program
Hi,
I want temporary table information which stores the concurrent program information.
ThanksOne possible Solution is to include Request Monitoring to ur OA Page which is similar SRS Oracle Form, second thing is you need to show in OAF page there could be multiple approaches to this:
1. Download Log file to client machine: article ia available on Mukul's Blog to download file from Server to client machine.
2. Read the log file and display its content in multi line Text BOx.
Regards,
Reetesh Sharma. -
Tables too high in safari 3 UPDATE -SOLVED
after I made all the adjustments, everything seems to be
working OK in both IE and Safari 3. Except the tables. They are
always too high.. What can I do, please?
karl,London
Update:
I got a message that it also was too high in Mozilla. I
experimented and came up with such a simple solution, that I am
absolutely astonished that neither of your guys, even the 'experts'
and 'seniors'. who were so fast off the mark to voice their
critique and telll how crappy it all was..
The SIMPLE solution:
the original line I had, for example:
<td bgcolor="#FFFFFF"><p class="normal_text">Any
text</p></td>
SHOULD BE:
<td bgcolor="#FFFFFF" class="normal_text">Any
text</td>
simple, but NONE of your quys, even those who had a look,
could see such a simple error or mine..:-))
Moral of the story: Look and think before your bark...
because you will sure look a proper idiot...
:-) end of problem... rip...
karl,LondonSnakEyez02 wrote:
> Malcolm, I have sent the necessary information back to
Karl. In regards to IE
> 6, I didn't figure that out 100% for him with the demo.
In IE 7, Firefox 3,
> and Safari 3 it should work fine. The problem is that in
IE 6 does not
> recognize the third level of CSS which includes the
overflow-x and overflow-y
> attributes. I do believe it can do overflow: auto;
instead of declaring them
> separately as I did. The reason it was that way was
because I found a super
> large image and I didn't want it to scroll left and
right as I knew it would.
> But if the content is going to stick to a specific
width, then the overflow:
> auto should save it. If not an IE 6 hack might be needed
to make it work for
> the older browser.
>
> The following is a really good resource to look at for
browser usage:
>
>
http://www.w3schools.com/browsers/browsers_stats.asp
>
> IE 6 has been on a decline while IE 7 was stagnant but
now appears to finally
> be turning around. If the users of his site do use IE 6,
it might be more
> effective to use a table layout over a CSS layout just
because IE 6 and earlier
> tended to lack the CSS standards whereas Safari, Opera
and Firefox tended to
> use a fairly similar rendering engine and now IE 7 is
catching on to the
> standards.
>
Hey I was following - hope you don't mind a suggestion.
How about a CC such as.....
<!--[if lte IE 6]><style>#main_content{width:
720px; overflow:
auto;}</style><![endif]-->
I know it gives a hor scrollbar but I think it looks better
that way or
at least visually it is more like the rest of the browsers on
XPPro at
least!
Just another opinion :-)
chin chin
Sinclair -
Firefox does not display button and table in High Contrast Theme
When i'm using the high contrast theme in Windows 7, the webpage i'm accessing does not show layouts for tables, textboxes and buttons, whereas while accessing the same page with other browsers (i.e Chrome,IE) I can view them correctly. Please suggest whether it is possible to get the layouts in High contrast theme, if Yes, kindly tell the detailed steps to do that!
TIAThis is an image of what displays for me
-
Hi all,
I have the following observation related to TEMP table. I am wondering if it is always correct.
When you query dba_tables the tablespace_name is empty if it is a temporary table. Also it has 0 records.
Also I just found one index organized table in our db (first time see this creature) based on iot_type = ‘IOT’. It also has tablespace_name column empty and 0 records in table. Based on the knowledge I got from reading the index organized table should just like regular table except that its data is sorted when saved in the database. So if it is being used it should have non zero records in the table, right?
Thanks a lot for your info.
ShirleyHi..
21:37:05 ravan >conn anand/xxxxxx
Connected.
21:37:46 ravan >21:38:01 ravan >CREATE TABLE t1 (c1 NUMBER PRIMARY KEY, c2 VARCHAR2(30)) ORGANIZATION INDEX tablespace users;
Table created.
Elapsed: 00:00:00.01
21:38:51 ravan >select OWNER,TABLE_NAME,TABLESPACE_NAME,IOT_NAME,IOT_TYPE from dba_tables where table_name='T1';
OWNER TABLE_NAME TABLESPACE_NAME IOT_NAME IOT_TYPE
ANAND T1 IOT
21:49:02 ravan >insert into t1 values (1,'a');
1 row created.
Elapsed: 00:00:00.00
21:49:21 ravan >insert into t1 values (2,'b');
1 row created.
Elapsed: 00:00:00.00
21:49:25 ravan >insert into t1 values (3,'c');
1 row created.
Elapsed: 00:00:00.00
21:49:29 ravan >insert into t1 values (4,'d');
1 row created.
Elapsed: 00:00:00.00
21:49:33 ravan >
21:49:34 ravan >commit;
Commit complete.
Elapsed: 00:00:00.00
21:49:36 ravan >
21:49:36 ravan >
21:49:36 ravan >
21:49:37 ravan >select * from t1;
C1 C2
1 a
2 b
3 c
4 d
Elapsed: 00:00:00.00
21:50:40 ravan >conn sys/xxxxxx as sysdba
Connected.
21:51:20 ravan >exec dbms_stats.gather_table_stats(ownname =>'ANAND',tabname =>'T1',cascade =>true);
PL/SQL procedure successfully completed.
21:55:34 ravan >select table_name,owner,tablespace_name,num_rows,last_analyzed,avg_row_len,blocks FROM dba_tables WHERE table_name like UPPER('%&table_name%');
Enter value for table_name: t1
TABLE_NAME OWNER TABLESPACE_NAME NUM_ROWS LAST_ANAL AVG_ROW_LEN BLOCKS
T1 ANAND 4 05-MAR-09 5
21:56:50 ravan >select table_owner,table_name,owner AS index_owner,index_name,tablespace_name,num_rows,status,index_type FROM dba_indexes WHERE table_owner = UPPER('&owner') AND table_name = UPPER('&table_name') ORDER BY table_owner, table_name, index_owner, index_name;
Enter value for owner: anand
Enter value for table_name: t1
TABLE_OWNER TABLE_NAME INDEX_OWNER INDEX_NAME TABLESPACE_NAME NUM_ROWS STATUS INDEX_TYPE
ANAND T1 ANAND SYS_IOT_TOP_28811 USERS 4 VALID IOT - TOP
Elapsed: 00:00:00.00HTH
Anand -
IOT tables ..Analyze
I see that Oracle Index Organized Tables are not getting analyzed by itself. Is this expected? Do i need to analyze this table manually ?
We are using 10.1.0.5
ThanksLook at the dbms_iot built-in package
http://www.psoug.org/reference/dbms_iot.html
Maybe you are looking for
-
Sharing itunes library with additonal user on same PC
My husband and I both have separate itunes accounts on the same PC and log on to Windows 7 as different users (I am the administrator). How can we share our itunes libraries with each other? Home sharing only seems to work for more than 2 PCs! Also,
-
New macbook authorized on itunes
I transfered all of my music to my new MacBook Pro and authorized the itunes, but now some albums won't play. I've tried deauthorizing and re-authorizing but it didn't work.
-
Does anyone know how to fix keynote when it won't start up?
-
Hi, I have to 2 subforms,name table_subform[0] and table_subform[1] . To add a new table , i use script : var sSubformSOM = "xfa.form.form1.page1.table_subform"; var oSubform = xfa.resolveNode(sSubformSOM); var sParentSOM = oSubform.parent.somEx
-
Version Control in PI 7.1
Hi Experts I am working on one the situation where I need to relese my modified mapping to QA, In QA there is a previous version exists, I do not want to ovverride the existing version in QA, and need to relase latest version to QA Please let me know