Derby
  1. Derby
  2. DERBY-5799

add more info on when Derby chooses 32k page size for tables.

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 10.8.2.2, 10.9.1.0
    • Fix Version/s: 10.8.3.0, 10.9.2.2, 10.10.1.1
    • Component/s: Documentation
    • Labels:
      None

      Description

      Enhance the following documentation to explain all cases when Derby will default a table to 32k.
      current doc:
      http://db.apache.org/derby/docs/10.8/ref/rrefproper40688.html

      1) better describe what "long" means. Originally this was clear as it meant just datatypes with
      the "long" qualifier. Now it also includes Blob and Clob columns. Not sure if we should list
      all the types, or just something like long, Blob and/or Clob.

      2) Derby will also choose 32k if the approximate length of the columns declared at create time is greater than 4k. Approximate is used as each different datatype may or may not be fixed length
      when stored on the page. Character data may take 1, 2, or 3 bytes per character, obviously
      variable length data like varchar can't be known at create time, ...
      I don't think we should try to document exact derby algorithm, rather doc that Derby will default
      to what it thinks should be the best size of either 4k or 32k unless user chooses to override. I
      do think it is useful to doc that Derby will include both existence of long columns and the estimate
      length of the row.

      Here some comments from Property.java that describes constants used, if these constants every change then documentation would change also:
      /**

      • The default page size to use for tables that contain a long column.
        **/
        public static final String PAGE_SIZE_DEFAULT_LONG = "32768";

      /**

      • The bump threshold for pages sizes for create tables
      • If the approximate column sizes of a table is greater than this
      • threshold, the page size for the tbl is bumped to PAGE_SIZE_DEFAULT_LONG
      • provided the page size is not already specified as a property
        **/
        public static final int TBL_PAGE_SIZE_BUMP_THRESHOLD = 4096;

      /**

      • The bump threshold for pages size for index.
      • If the approximate key columns of an index is greater than this
      • threshold, the page size for the index is bumped to PAGE_SIZE_DEFAULT_LON
        G
      • provided the page size is not already specified as a property
        **/
        public static final int IDX_PAGE_SIZE_BUMP_THRESHOLD = 1024;
      1. DERBY-5799.diff
        1 kB
        Kim Haase
      2. rrefproper40688.html
        14 kB
        Kim Haase

        Activity

        Hide
        Kim Haase added a comment -

        I'm finally working on this – thanks for the info, Mike.

        Probably a naive question: for column size, what does "long" mean in terms of data types? Does it refer to LONG VARCHAR and LONG VARCHAR FOR BIT DATA? I don't think it means BIGINT (java.lang.Long) because that's only 8 bytes.

        I'm figuring I might as well be precise. Thanks!

        Show
        Kim Haase added a comment - I'm finally working on this – thanks for the info, Mike. Probably a naive question: for column size, what does "long" mean in terms of data types? Does it refer to LONG VARCHAR and LONG VARCHAR FOR BIT DATA? I don't think it means BIGINT (java.lang.Long) because that's only 8 bytes. I'm figuring I might as well be precise. Thanks!
        Hide
        Kim Haase added a comment -

        Based on my hypothesis, I'm attaching DERBY-5799.diff and rrefproper40688.html. Please let me know if changes are needed. Thanks!

        Show
        Kim Haase added a comment - Based on my hypothesis, I'm attaching DERBY-5799 .diff and rrefproper40688.html. Please let me know if changes are needed. Thanks!
        Hide
        Kim Haase added a comment -

        Having received no comments, I'm planning to commit this patch on October 8. I hope I guessed right about the data types.

        Show
        Kim Haase added a comment - Having received no comments, I'm planning to commit this patch on October 8. I hope I guessed right about the data types.
        Hide
        Knut Anders Hatlen added a comment -

        Hi Kim,
        Your changes look right to me. +1

        Show
        Knut Anders Hatlen added a comment - Hi Kim, Your changes look right to me. +1
        Hide
        Kim Haase added a comment -

        Thanks very much, Knut.

        Committed patch DERBY-5799.diff to documentation trunk at revision 1395558.
        Merged to 10.9 doc branch at revision 1395566.
        Merged to 10.8 doc branch at revision 1395570.

        Show
        Kim Haase added a comment - Thanks very much, Knut. Committed patch DERBY-5799 .diff to documentation trunk at revision 1395558. Merged to 10.9 doc branch at revision 1395566. Merged to 10.8 doc branch at revision 1395570.
        Hide
        Kim Haase added a comment -

        Closing, since change has appeared in Latest Alpha Manuals.

        Show
        Kim Haase added a comment - Closing, since change has appeared in Latest Alpha Manuals.

          People

          • Assignee:
            Kim Haase
            Reporter:
            Mike Matrigali
          • Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development