records_per_block参数

本文详细介绍了RECORDS_PER_BLOCK参数的功能及其限制条件,包括该参数如何影响数据块中的记录分布,以及在何种情况下不能使用该参数。此外,还通过实验验证了参数设置的效果。
        l RECORDS_PER_BLOCK参数用于设定每个BLOCK中记录数的最大值,其先找到当前表所有BLOCK中容纳的最大行数,并会把这个数字记录到数据字典,以后任何导致       BLOCK行数超过这个数字的插入都会被拒绝(插入另一个块中)。

l  不能对空表设定此参数。

l  每个BLOCK中可以包含的记录数的最低下限是2

l  不能在已经有 bitmap 的表中使用records_per_block参数,也就是说,如果要使用records_per_block参数,必须先alter table xxx minimize records_per_block,然后才能在表上建立索引。

如果字段的类型、大小、个数发生了改变,那么就会导致一个比较差的结果,这就说明了,这项功能只在于使用在静态的环境中,比如数据仓库。

主要用途:

l  通过减少同一个block中的记录数,使记录分布于更多的数据块中,可以优化等待块类型为data blockBuffer Busy Wait事件。

l  其主要用途是提高BITMAP INDEX的存储性能


实验:
1.
 SQL> create table t (id int,name char(3));
 Table created.
 SQL> alter table t minimize records_per_block;
 alter table t minimize records_per_block
            *
 ERROR at line 1:
 ORA-28603: statement not permitted on empty tables
 ★空表不能设定此参数
2.
 SQL> begin
  2  for i in 1..20
  3  loop
  4  insert into t values(i,'a'||i);
  5  end loop;
  6  end;
  7  /
 PL/SQL procedure successfully completed.
 SQL> create bitmap index t_index on t(id);
 Index created.
 SQL> alter table t minimize records_per_block;
 alter table t minimize records_per_block
 *
 ERROR at line 1:
 ORA-28602: statement not permitted on tables containing bitmap indexes
 ★不能在含有位图索引的表上使用此参数
3.
 SQL> create table t(id int,name char(5));
Table created.
SQL> insert into t values(1,'a');
1 row created.
SQL> alter table t minimize records_per_block;
Table altered.
SQL> select dbms_rowid.rowid_block_number(rowid),count(*) from t group by dbms_r
owid.rowid_block_number(rowid);
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)   COUNT(*)
------------------------------------ ----------
                               29562          1
SQL> begin
  2  for i in 1..20
  3  loop
  4  insert into t values(i,'a'||i);
  5  end loop;
  6  end;
  7   /
PL/SQL procedure successfully completed.
SQL> select dbms_rowid.rowid_block_number(rowid),count(*) from t group by dbms_r
owid.rowid_block_number(rowid);
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)   COUNT(*)
------------------------------------ ----------
                               29779          2
                               29565          2
                               29562          2
                               29778          2
                               29567          2
                               29564          2
                               29780          1
                               29563          2
                               29566          2
                               29568          2
                               29777          2

11 rows selected.

RECORDS_PER_BLOCK参数的最小值为2



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29014732/viewspace-777029/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29014732/viewspace-777029/

Traceback (most recent call last) Cell In[2], line 85 82 enterprise_id = f"ENT{str(i).zfill(3)}" 83 print(f"生成企业 {enterprise_id} 数据...") ---> 85 df = generate_enterprise_data(enterprise_id) 87 # 保存为Excel 88 file_path = os.path.join(OUTPUT_DIR, f"{enterprise_id}.xlsx") Cell In[2], line 28, in generate_enterprise_data(enterprise_id) 21 """生成单个企业销售数据(修复了数据类型问题)""" 22 # 初始化DataFrame并指定数据类型 23 df = pd.DataFrame({ 24 "企业ID": pd.Series([enterprise_id] * RECORDS_PER_FILE, dtype='string'), 25 "销售日期": pd.Series([None] * RECORDS_PER_FILE, dtype='datetime64[ns]'), 26 "产品ID": pd.Series([None] * RECORDS_PER_FILE, dtype='string'), 27 "销售量": pd.Series([pd.NA] * RECORDS_PER_FILE, dtype='Int64'), ---> 28 "单价": pd.Series([pd.NA] * RECORDS_PER_FILE, dtype='float64'), 29 "销售额": pd.Series([pd.NA] * RECORDS_PER_FILE, dtype='float64'), 30 "客户ID": pd.Series([None] * RECORDS_PER_FILE, dtype='string'), 31 "地区": pd.Series([None] * RECORDS_PER_FILE, dtype='string') 32 }) 34 # === 销售日期(datetime64[ns]类型)=== 35 dates = np.random.choice(DATE_RANGE, RECORDS_PER_FILE) File ~\anaconda3\envs\myenv\Lib\site-packages\pandas\core\series.py:584, in Series.__init__(self, data, index, dtype, name, copy, fastpath) 582 data = data.copy() 583 else: --> 584 data = sanitize_array(data, index, dtype, copy) 586 manager = _get_option("mode.data_manager", silent=True) 587 if manager == "block": File ~\anaconda3\envs\myenv\Lib\site-packages\pandas\core\construction.py:651, in sanitize_array(data, index, dtype, copy, allow_2d) 648 subarr = np.array([], dtype=np.float64) 650 elif dtype is not None: --> 651 subarr = _try_cast(data, dtype, copy) 653 else: 654 subarr = maybe_convert_platform(data) File ~\anaconda3\envs\myenv\Lib\site-packages\pandas\core\construction.py:820, in _try_cast(arr, dtype, copy) 818 subarr = maybe_cast_to_integer_array(arr, dtype) 819 elif not copy: --> 820 subarr = np.asarray(arr, dtype=dtype) 821 else: 822 subarr = np.array(arr, dtype=dtype, copy=copy) TypeError: float() argument must be a string or a real number, not 'NAType'
09-29
127.0.0.1:6379> FT.INFO index_cwl 1) index_name 2) index_cwl 3) index_options 4) (empty array) 5) index_definition 6) 1) key_type 2) JSON 3) prefixes 4) 1) prefix_cwl 5) default_score 6) "1" 7) attributes 8) 1) 1) identifier 2) $.content 3) attribute 4) content 5) type 6) TEXT 7) WEIGHT 8) "1" 2) 1) identifier 2) $.embedding 3) attribute 4) embedding 5) type 6) VECTOR 7) algorithm 8) HNSW 9) data_type 10) FLOAT32 11) dim 12) (integer) 1536 13) distance_metric 14) COSINE 15) M 16) (integer) 16 17) ef_construction 18) (integer) 200 3) 1) identifier 2) $.name 3) attribute 4) name 5) type 6) TAG 7) SEPARATOR 8) 4) 1) identifier 2) $.page_number 3) attribute 4) page_number 5) type 6) NUMERIC 5) 1) identifier 2) $.block_number 3) attribute 4) block_number 5) type 6) NUMERIC 9) num_docs 10) (integer) 9 11) max_doc_id 12) (integer) 9 13) num_terms 14) (integer) 146 15) num_records 16) (integer) 228 17) inverted_sz_mb 18) "0.014847755432128906" 19) vector_index_sz_mb 20) "6.216575622558594" 21) total_inverted_index_blocks 22) (integer) 149 23) offset_vectors_sz_mb 24) "2.193450927734375e-4" 25) doc_table_size_mb 26) "9.784698486328125e-4" 27) sortable_values_size_mb 28) "0" 29) key_table_size_mb 30) "3.31878662109375e-4" 31) tag_overhead_sz_mb 32) "2.765655517578125e-5" 33) text_overhead_sz_mb 34) "0.0048732757568359375" 35) total_index_memory_sz_mb 36) "0.026491165161132813" 37) geoshapes_sz_mb 38) "0" 39) records_per_doc_avg 40) "25.33333396911621" 41) bytes_per_record_avg 42) "68.28508758544922" 43) offsets_per_term_avg 44) "1.0087718963623047" 45) offset_bits_per_record_avg 46) "8" 47) hash_indexing_failures 48) (integer) 9 49) total_indexing_time 50) "2.3350000381469727" 51) indexing 52) (integer) 0 53) percent_indexed 54) "1" 55) number_of_uses 56) (integer) 1 57) cleaning 58) (integer) 0 59) gc_stats 60) 1) bytes_collected 2) "0" 3) total_ms_run 4) "0" 5) total_cycles 6) "0" 7) average_cycle_time_ms 8) "nan" 9) last_run_time_ms 10) "0" 11) gc_numeric_trees_missed 12) "0" 13) gc_blocks_denied 14) "0" 61) cursor_stats 62) 1) global_idle 2) (integer) 0 3) global_total 4) (integer) 0 5) index_capacity 6) (integer) 128 7) index_total 8) (integer) 0 63) dialect_stats 64) 1) dialect_1 2) (integer) 0 3) dialect_2 4) (integer) 0 5) dialect_3 6) (integer) 0 7) dialect_4 8) (integer) 0 65) Index Errors 66) 1) indexing failures 2) (integer) 9 3) last indexing error 4) Invalid JSON type: String type can represent only TEXT, TAG, GEO or GEOMETRY field 5) last indexing error key 6) "prefix_cwlacf8a9b4-7b19-4d22-a489-0e4d1a993021" 67) field statistics 68) 1) 1) identifier 2) $.content 3) attribute 4) content 5) Index Errors 6) 1) indexing failures 2) (integer) 0 3) last indexing error 4) N/A 5) last indexing error key 6) "N/A" 2) 1) identifier 2) $.embedding 3) attribute 4) embedding 5) Index Errors 6) 1) indexing failures 2) (integer) 0 3) last indexing error 4) N/A 5) last indexing error key 6) "N/A" 3) 1) identifier 2) $.name 3) attribute 4) name 5) Index Errors 6) 1) indexing failures 2) (integer) 0 3) last indexing error 4) N/A 5) last indexing error key 6) "N/A" 4) 1) identifier 2) $.page_number 3) attribute 4) page_number 5) Index Errors 6) 1) indexing failures 2) (integer) 9 3) last indexing error 4) Invalid JSON type: String type can represent only TEXT, TAG, GEO or GEOMETRY field 5) last indexing error key 6) "prefix_cwlacf8a9b4-7b19-4d22-a489-0e4d1a993021" 5) 1) identifier 2) $.block_number 3) attribute 4) block_number 5) Index Errors 6) 1) indexing failures 2) (integer) 0 3) last indexing error 4) N/A 5) last indexing error key 6) "N/A"
07-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值