時間:2022-10-02來源:www.ship-models.net作者:電腦系統城
bitmap index是一種位圖索引,是一種快速數據結構,能夠加快查詢速度
使用限制:
bitmap索引支持的數據類型:
創建索引
1 2 3 4 |
mysql> create index if not exists click_bitmap_index on test_db.click (user_id) using bitmap comment 'bitmap index test' ; Query OK, 0 rows affected (0.05 sec) mysql> |
查看索引
1 2 3 4 5 6 7 8 9 |
mysql> show index from test_db.click; + -------------------------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-------------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | + -------------------------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-------------------+ | default_cluster:test_db.click | | click_bitmap_index | | user_id | | | | | | BITMAP | bitmap index test | + -------------------------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+-------------------+ 1 row in set (0.04 sec) mysql> |
刪除索引
1 2 3 4 |
mysql> drop index if exists click_bitmap_index on test_db.click; Query OK, 0 rows affected (0.03 sec) mysql> |
是一種多哈希函數映射的快速查找算法,本質上是一種位圖結構。通常應用在一些需要快速判斷某個元素是否屬于集合,但是并不嚴格要求100%正確的場合,因為BloomFilter會告訴調用者一個元素存在或不存在一個集合。但存在不一定準確
實際上是由一個超長的二進制位數組和一系列的哈希函數組成。二進制位數組初始全部為0,當給定一個元素時,這個元素會被一系列哈希函數計算映射出一系列的值,所有的值在位數組的偏移量處置為1。而對于一個待查詢的元素,也會用相同的哈希函數映射到位數組上,只要有一個哈希函數映射沒有命中之前的元素的偏移量,則不存在于集合中
下圖所示出一個m=18, k=3(m是該Bit數組的大小,k是Hash函數的個數)的Bloom Filter示例。集合中的x、y、z三個元素通過3個不同的哈希函數散列到位數組中。當查詢元素w時,通過Hash函數計算之后因為有一個比特為0,因此w不在該集合中
BloomFilter索引也是以Block為粒度創建的。每個Block中,指定列的值作為一個集合生成一個BloomFilter索引條目,用于在查詢是快速過濾不滿足條件的數據
創建表使用BloomFilter索引
1 2 3 4 5 6 7 8 9 10 11 12 |
mysql> create table order_tb( -> user_id bigint , -> order_date date , -> city varchar (32), -> url varchar (512) -> ) distributed by hash(user_id, city) buckets 8 -> properties( -> 'bloom_filter_columns' = 'user_id,order_date' -> ); Query OK, 0 rows affected (0.07 sec) mysql> |
查看BloomFilter索引
1 | mysql> show create table order_tb; |
刪除BloomFilter索引
1 2 3 4 |
mysql> alter table test_db.order_tb set ( 'bloom_filter_columns' = '' ); Query OK, 0 rows affected (0.05 sec) mysql> |
修改BloomFilter索引
1 2 3 4 |
mysql> alter table test_db.order_tb set ( 'bloom_filter_columns' = 'user_id,city' ); Query OK, 0 rows affected (0.05 sec) mysql> |
2022-10-02
Elasticsearch6.2服務器升配后的bug(避坑指南)2022-10-02
aarch64服務器部署mysql的流程分析2022-10-02
解決Navicat 連接服務器不成功的問題1、安裝python 2、安裝PaddlePaddle CPU 版本 3、安裝 paddlehub 4、從github下載 PaddleOCR 5、下載推理模型庫 6、修改模型配置文件 7、啟動 ocr_system 服務 8、測試 ocr_system 服務...
2022-09-21