Question about using Db cursors safely outside a transaction

I have a question re: proper use of the Dbc (Db cursor) to avoid
self-deadlock when two cursors are opened by the same thread and used only
for reading. (This is when open in full transactional mode, with an
environment and all.)
My first question is, should I bother? Or is it equivalent to always start a
transaction, even before read operations? My reading of the doc says it is
not equivalent. The doc says "in the presence of transactions all locks are
held until commit". I read it as saying that reading with a cursor outside a
transaction provides degree 2 isolation (cursor stability), with greater
concurrency than reading inside a transaction (which provides degree 3
isolation). What I'm attempting here is to avoid degree 3 isolation, and
locks held until commit, for cursor reads -- I want the greater concurrency.
This is just a technique to do reading outside a transaction, all writing
will be done within transactions, and all reading will be done with a txnid
too, whenever a transaction is in progress. Am I OK so far?
Here's how I imagine getting away with it. Tell me if this works please :-)
and (of course) if there's a better way. Suppose DB_THREAD was specified,
but to avoid the dreaded self-deadlock when using multiple cursors outside a
transaction, all such cursors are used only to read and are dup'ed from a
single cursor (one kept as a prototype in each thread for that purpose,
solely to ensure a single locker ID for all these read cursors; the
prototype cursor is never used to lock anything). As I read the doc, that
prevents the thread from self-deadlocking, provided it doesn't start any
transactions while such read cursors are extant (other than the prototype
cursor, which shouldn't matter because it never holds any locks). I
understand that if the same thread did start a transaction, it could
self-deadlock with such a read cursor, but I won't be doing that.
My next question is, am I still OK if multiple Db's are placed in one file?
The doc says in that case lock contention can only occur for page
allocations -- seeming to imply that competition among read-only cursors
won't ever cause it -- though they could be contending with other threads
that are writing -- could thread self-deadlock ever occur here? I'm not
worried about real deadlock with the other (writer) thread, just thread
self-deadlock between my two read cursors.
Many thanks if you could confirm my reasoning (or dash my hopes) before I
find out the long, hard nondeterministic way if it's any good.

Good, so I've overdesigned my solution -- I can dispense with dup()ing a prototype cursor and just use multiple read-only cursors made by Db::cursor with a NULL txnid.
Many thanks for your prompt response.
I am David Christie at samizdat.org BTW -- we exchanged email last year re: a potential C++ std container interface for Berkeley DB -- sometime before the merger. I hope it's all worked out well for your sleepycat guys. It's nice to see some of you are still around and responding to the open source community.

Similar Messages

  • Question about using new battery in old Powerbook

    I have a pre-intel Powerbook G4, and the battery is pretty much toast (lasts about 15 minutes now). I have ordered a new battery for it, and I have this question about using it:
    Am I smarter to keep the new strong battery out of the PB most days (as I usually work with it plugged in at home) and just pop it in when I know I will be out surfing on batteries? Or is it just as good living in my laptop 24/7 and only occasionally being called upon to do its job?
    Current bad Battery Information below:
    Battery Installed: Yes
    First low level warning: No
    Full Charge Capacity (mAh): 1144
    Remaining Capacity (mAh): 1115
    Amperage (mA): 0
    Voltage (mV): 12387
    Cycle Count: 281
    thanks folks, Shereen

    Hi, Shereen. Every Powerbook battery wants to be used — drained and then recharged — at least every couple of weeks. If you've always used your Powerbook on AC power nearly all the time, and not followed that pattern of discharging and recharging the battery every week or two, it's possible that your use habits have shortened the lifespan and prematurely diminished the capacity of your old battery. Of course it's also possible that your battery is merely old, as a battery's capacity also diminishes with age regardless of how it's used. You didn't say how old the battery is in years, so this may or may not be an issue. I mention it only because it can be an issue.
    For general information on handling a battery for the longest possible lifespan, see this article. My advice on the basis of that article and long experience reading these forums is that it would be OK to do as you propose, but I doubt that you'd derive any significant benefit from it. You would still want to be sure of putting the new battery through a charge/discharge cycle every week or two, even if you didn't have a reason to use the Powerbook away from home or your desk, because sitting unused outside the computer is just as bad for a battery as sitting unused inside it. And you should never remove the battery from your computer when it's completely or almost completely discharged and let it sit that way any longer than a day or two.
    Message was edited by: eww

  • I have a question about using multiple ipads in our school.  Each of our teachers have a iPad and AppleTV in their classroom.  The issue is, with our classrooms so close in proximity to one another, is there a way to pair teacher

    I have a question about using multiple ipads in our school.  Each of our teachers have a iPad and AppleTV in their classroom.  The issue is, with our classrooms so close in proximity to one another, is there a way to pair teacher #1 iPad to its AppleTV without effecting/projecting onto the adjacent teachers #2 classroom AppleTV?

    Not as such.
    Give the AppleTV units unique names and also enable Airplay password in settings with unique passwords for each teacher.
    AC

  • Hi, I have quick question about use of USEBEAN tag in SP2. When I specify a scope of SESSION for the java bean, it does not keep the values that I set for variable in the bean persistent.Thanks,Sonny

     

    Make sure that your bean is implementing the serializable interface and that
    you are accessing the bean from the session with the same name.
    Bryan
    "Sandeep Suri" <[email protected]> wrote in message
    news:[email protected]..
    Hi, I have quick question about use of USEBEAN tag in SP2. When I
    specify a scope of SESSION for the java bean, it does not keep the
    values that I set for variable in the bean persistent.Thanks,Sonny
    Try our New Web Based Forum at http://softwareforum.sun.com
    Includes Access to our Product Knowledge Base!

  • Question about using TVARV in an ABAP program

    Hello gurus, Im sorry about the silly question.
    I have a question about using TVARV in an ABAP program.
    A program is presenting a problem and I think that in this code:
    SELECT SIGN OPTI LOW HIGH
      FROM TVARV
      INTO TABLE R_1_163431035_VELOCIDADE
      WHERE  NAME = '1_163431035_VELOCIDADE'
      AND    TYPE = 'S'.
      IF ZMM001-VELOCIDADE_B   IN R_1_163431035_VELOCIDADE AND
          ZOPERADORAS-OPERADORA = 'ABCD' AND
          ZMM001-MATERIAL       IN R_1_163431035_PRODUTO.
      ELSE.
      ENDIF.
    What happens is that the value "ZMM001-SPEED" B not exist in "R1_163431035_VELOCIDADE" but the program executes commands under the IF and not under the ELSE, as I imagine it would work. Is this correct ?
    I am new to ABAP programming, but I have a lot of XP in other programming languages ​​and this makes no sense to me.
    Anyone know where I can find some documentation of the use of "TVARV" in ABAP programs?
    I search the Internet if other programmers use TVARV this way, but found nothing, which leads me to think that was a quick and dirty solution that used here.
    If this is a bad way to program, what would be the best way?
    Regards
    Ronaldo.

    Hi Ronaldo,
    But in this case, the range is not empty, there are 17 records, in this way.:
    For the column "SING" all values ​​are "E"
    It means that the result is false if ZMM001-VELOCIDADE_B has the same value as one of the 17 records (E = exclude).
    For instance, if it has value 'C' and one of 17 records matches C, then the result is false.
    The "IF" with "IN" using "TVARV" as used in the program of the post above has the same behavior of a selection screen?
    Yes, the same behavior as the selection criterion to be exact. You can press the help key in the complex selection dialog for more info.
    I know it's a silly and very basic question, but other language that I used, only the SQL has the "IN" operator, but I think they work in different ways, so I would like to understand how it works in ABAP.
    Not silly ;-). Yes they work differently.
    More info here:
    - http://help.sap.com/saphelp_nw70/helpdata/en/9f/dba74635c111d1829f0000e829fbfe/frameset.htm
    - http://help.sap.com/saphelp_nw70/helpdata/en/9f/dba71f35c111d1829f0000e829fbfe/frameset.htm
    BR
    Sandra

  • Question about using Macbook in Vietnam.

    I have a question about using Macbook in Vietnam. I bought my mac here in the US, and I'm going to visit Vietnam, but I'm wondering if I can plug in the power directly into the wall or I have to need any convert power modem for my mac. The only thing I know that Vietnam use 220V so, can anyone help me?

    You may need a plug adaptor, but you don't need a power converter.
    (43828)

  • I have a question about using adobe CS files in CS6 edition

    I am a graphic artist . I have a question about using adobe CS files in CS6 edition. when I am gonna open thse adobe CS created files in CS6 Edition i get a color variation than i made with the CS version.Please give me an idea about this issue as soon as possible.If you need i can upload my problem as a screenshot to clearity

    donrulz,
    Are your Edit>Color Settings the same?
    Are you using spot colours, such as Pantone (there have been some changes in CMYK values with new colour books)?

  • Where Would be the best category to ask a question about using dashboard?

    Where Would be the best category to ask a question about using dashboard?

    However, don't ask it in this topic. Create a new topic for the question with a title describing that you are looking for Dashboard help.

  • Question about Using PAPI Web Service in PowerBuilder 9

    Hi, all.
    I Have a simple question about using papiws in power builder 9.
    In pb9, I created a new Web Service Proxy Wizard and I input a url for papiws(ex. http://seraphpernote:7001/papiws/PapiWebService) and click next.
    But I couldn't get any Service List.
    In Eclipse, I used this url for using papiws well.
    Does anybody know about this case??
    help me plz.

    IIRC you must activate PAPI-WS for the engine. In Studio you do it by right-clicking on the project, then "engine preferences". In enterprise/standalone you must activate PAPI-WS in the Admin Center.

  • Question about using 10g/11g and APEX ...

    Hi,
    I just recently learned of Oracle's APEX and have a few questions about using it.
    Can I use APEX with express, standard, and enterprise editions of 10g and 11g?
    Are all of these free to use?

    You might want to read about APEX rather than jumping into questions that are reasonably well documented. Info at http://www.oracle.com/technology/products/database/application_express/index.html
    Your specific questions:
    1) Apex is a package that can be installed into any properly licensed database.
    2) The price for the production license of the database varies by edition.
    The price for Express Edition is $0 for use in production. Part of the cost for that edition is 'no Oracle Support based support, no patches, data volume limitation, etc.'

  • Question about using Runtime.getRuntime();

    hi all
    i have a question about using Runtime.getRuntime(). if i use this to get a runtime reference to run an external program, is it considered as starting a new thread inside the thread that starts it?
    is it safe to do it in the Session EJB? if not, what can you recommand to do it? thanks

    hi all
    i have a question about using Runtime.getRuntime().
    if i use this to get a runtime reference to run an
    external program, is it considered as starting a new
    thread inside the thread that starts it? No. Starting a process, starts a process. Threads have nothing to do with it.
    is it safe to do it in the Session EJB? if not, what
    can you recommand to do it? thanksSo what? Run another process? If you want to run another process in java then your choices are to use Runtime.exec() or use JNI. And using JNI will probably end up doing exactly the same thing as Runtime.exec().
    "Safe" is harder. Typically to correctly use Runtime.exec() you must use threads. And as noted threads ideally should not be used. You can use them but if you do you had better understand why they didn't want you using them in the first place. You had also better be sure that you really want to wait for it to complete.
    Other than that Runtime.exec() is safe because it can't crash the VM like other interfaces can (like JNI.)

  • Question about using cursor

    My question is about performance:
    If I have a java program to call a stored procedure using a cursor, the code segment is like this:
    ResultSet rs = oracleCallableStatement.getObject(a_cursor);
    while (rs.hasNext()) {
    rs.getString(column_name);
    My question is -- how does this work behind scene? Would my java process talk to oracle to get the next record for EACH call inside the while loop? If yes, this seems to slow down my program and we should avoid using cursor.
    Thanks in advance for any reply.
    tom

    Victor,
    Is there something similar using PL/SQL, we use a gateway connection to AS400. I see that a PL/SQL cursor is fetching as many times as there are number of rows.
    Thanks for your help in advance.
    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by Victor Yu ([email protected]):
    Hi, Tom,
    Actually, Oracle JDBC will cache some rows in client side to reduce the round trip. It's called prefetching. Once your next() calls have run through those rows, JDBC will go back to fetch the next N rows. The default number of rows to prefetch to the client is 10. If your cursor return a lot of rows, say 1000 or more, you can change the number of rows to prefetch. Use the setRowPrefetch() method at the Statement level or setDefaultRowPrefetch() at the Connection level.<HR></BLOCKQUOTE>
    null

  • Questions about using the Voice Memos app

    I'm currently an Android user, but will be getting an iPhone 6 soon. My most used app is the voice memos app on my Android phone. I have a couple questions about the iPhone's built-in voice memos app.
    -Am I able to transfer my voice memos from my Android phone to my iPhone, so my recordings from my Android app will show up in the iPhone's voice memos app?
    -When exporting voice memos from the iPhone to computer, are recordings in MP3 format? If not, what format are they in?
    -In your opinion, how is the recording quality of the voice memos app?

    You cannot import your Android voice memos to your iPhone's voice memo app.  You might be able to play the Android memos and have the iPhone pick up the audio and record it.
    Here is the writeup about sending voice memos from the iPhone to your computer (from the iPhone User Guide):
    App quality is excellent.

  • Questions about Using APIs to import Bills and Routings - AND COSTS

    Hi Forum - the following is a back-and-forth with a customer about use of APIs - Inventory developer suggested I post the question here. Note the 2nd question - and thanks for any assistance.
    SR# 7332152.994 ALCOA
    Instructions given to ct:
    Q1 - Can I load the bill header and components at the same time?
    You should be able to load the bill header and components at the same time. Customer loads bill and component data inserting enough "other" data for each so that the bill sequence id will be derived. For the component record, the assembly item, org and alternate_bom_designator values will be used by BMCOIN to derive the bill_sequence_id.
    Example:
    INSERT INTO BOM_BILL_OF_MTLS_INTERFACE
    ORGANIZATION_CODE,
    ITEM_NUMBER,
    ALTERNATE_BOM_DESIGNATOR,
    PROCESS_FLAG,
    TRANSACTION_TYPE
    VALUES
    'M1',
    '&PARENT_ITEM',
    NULL,
    '1',
    'CREATE'
    INSERT INTO BOM_INVENTORY_COMPS_INTERFACE b
    ORGANIZATION_CODE,
    ASSEMBLY_ITEM_NUMBER,
    ALTERNATE_BOM_DESIGNATOR,
    COMPONENT_ITEM_NUMBER,
    OPERATION_SEQ_NUM,
    COMPONENT_QUANTITY,
    EFFECTIVITY_DATE,
    PROCESS_FLAG,
    TRANSACTION_TYPE
    VALUES
    'M1',
    '&PARENT_ITEM',
    NULL,
    '&COMPONENT_ITEM',
    1,
    1,
    trunc(SYSDATE),
    1,
    'CREATE'
    Hi Aruna, some additional information that may be useful:
    We can load/create the bill header and components at the same time using the scripts given (as above)
    Required Data for Creating a Routing : assembly_item_id,
    organization_id, routing_type, transaction_type, process_flag
    And following scripts can be used to load routing header and operations equences.
    INSERT INTO BOM_OP_ROUTINGS_INTERFACE
    (assembly_item_id,
    organization_id,
    routing_type,
    transaction_type,
    process_flag)
    VALUES (2255800,207,1,'Create',1);
    INSERT INTO BOM_OP_SEQUENCES_INTERFACE
    (assembly_item_id,
    organization_id,
    operation_seq_num,
    Department_code,
    effectivity_date,
    transaction_type,
    process_flag,
    operation_description)
    VALUES
    (2255800,207,100,'ASSEMBLY',
    to_date('24-FEB-2009'),'Create',1,
    'Paint Wagon');
    Q2: One more question, can an expense item can be added to the bill and can contribute the cost.
    As there is a confusion of what I asked, below I am rephrasing my question
    By an Expense Inventory Item, I mean an item that is just tracked for quantity only i.e.,Checking the attributes - Inventory Item, Stockable, Transactable under Inventory Tab and not checking the attribute - 'Inventory Asset Value'.
    My question here is, For these Expense Inventory Items, What is the difference between having the 'Costing enabled' attribute turned ON as opposed to having it UNCHECKED
    *Q3 I have tried to load the items and I could only load 1st level of components but could not load second level of bom at the same time.
    While inserting I have inserted plan level too.
    Please let me know if I have to do anything different to load second level.*
    Thanks
    James

    You may want to look at using the more4apps bill of materials wizard, an excel based solution for uploading assemblies and their components.

  • Questions about using Bitlocker without TPM

    We currently use Bitlocker to encrypt our Windows 7 computers with TPM. Now we are looking at encrypting some Windows 7 computers without a TPM. I see how to change the group policy setting to allow Bitlocker without a TPM. I have looked at a lot of other
    threads and I have a few questions about how the Bitlocker without TPM works.
    1) I see a USB drive containing a key is required for Bitlocker configurations without a TPM, say the end user loses this USB drive, what are the recovery options for their computer? 
    This article seems to indicate that without the USB drive connected, you are unable to even access recovery options http://blogs.technet.com/b/hugofe/archive/2010/10/29/bitlocker-without-tpm.aspx
    We have recovery backed up to AD when Bitlocker is enabled, but how could we do this recovery on a computer on computer where it's USB is lost? Would we have to remove the HD itself and attach it to another computer to access?
    2) After enabling Bitlocker on a computer without a TPM and using the USB Drive for the key, is there a way to also add a PIN or password protection at bootup?

    Hi,
    Sorry for my dilatory reply, 
    Configuring a startup key is another method to enable a higher level of security with the TPM. The startup key is a key stored on a USB flash drive, and the USB flash drive must be inserted every time the computer starts. The startup key is used to provide
    another factor of authentication in conjunction with TPM authentication. To use a USB flash drive as a startup key, the USB flash drive must be formatted by using the NTFS, FAT, or FAT32 file system.
    You must have a startup key to use BitLocker on a non-TPM computer.
    From: http://technet.microsoft.com/de-de/library/ee449438(v=ws.10).aspx#BKMK_Key
    For more Q&A about BitLocker, you can refer to the link above.
    hope this is helpful.
    Roger Lu
    TechNet Community Support

Maybe you are looking for

  • HT201317 Albums on iCloud

    I have created albums on my iPad but none of the albums are on my iPhone. I know iCloud is working because all the photos in the albums on my iPad were taken with my iPhone. Does anyone know if albums are compatable with iCloud? Thanks

  • It won't let me buy stuff

    It won't let me buy stuff it says "we could not complete your itunes store purchase, an unknown error has occurred (-45054) there was an error in the itunes store. Please try again later." This has going on for the past week or so.

  • After WLS10.3 migration getBinaryStream in Oracle.sql.BLOB not reading data

    Please some one help me. After the 10.3 migration, the values in CSV file(as BLOB in DATABASE) is not read by getBinaryStream method. It returns 0. It was working before. Please find below the code: import oracle.jdbc.OracleResultSet; import oracle.s

  • CASE Question

    I have a case statement that pulls days, hours and minutes from a number that represents total minutes: CASE CAST(m.multi AS VARCHAR) WHEN '1' then CAST(m.elapsedtime/1440 as varchar(20)) + ':' + CAST(m.elapsedtime % 1440/60 as varchar(20)) + ':' + C

  • Hard to Explain Mark on my Screen that keeps getting bigger

    There is this mark on my screen that at first was very small and looked like something just on the screen, but its not, its like part of the screen is dead. And everyday it gets bigger. It's very annoying.