ingres 中的 parallel create index

在开源的数据库中,支持并行建索引的,只有ingres,但它并不是并行建一个索引,而是对同一个表,同时并行建多个索引,

下面主要分析它如何协调主子线程通信部分,使用版本是 ingres-10.1.0-114-gpl;

并行建索引函数为:src/back/dmf/dmu/dm2upind.c        STATUS dm2u_pindex( DM2U_INDEX_CB   *index_cbs)

主子线程通信函数是 src/back/dmf/dmu/dm2uputi.c       

 DB_STATUS dm2u_pload_table(DM2U_MXCB   *mxcbs, i4  *rec_cnt, DB_ERROR  *dberr)

 

 

ingres是多线程,所以建索引的主线程和各个子线程是通过内存直接交换信息,没有通过共享内存;它由多个页面组成

 

 

 

 

DB_STATUS dm2u_pload_table(DM2U_MXCB   *mxcbs, i4  *rec_cnt, DB_ERROR  *dberr)

 

 

在子线程从交换页面读数据时,是互斥的,就是说同一时刻只有一个子线程读一个交换页面,不存在并发读

而在主线程写的时候,是没加互斥的,

一个写,多个读的时候,读之间互斥,写没加互斥,没写满之前,读不到

 

 

 主线程放数据,子线程取数据的函数,没什么东西,主要是写满之后,取下一个页面的函数

 

 

 

 

 

实现了一个线程写,多个线程读,每个读线程读到全是一样的,

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是 Kubernetes 使用 Ingress 进行配置的一些步骤: 1. 首先需要安装 Ingress Controller,可以使用 Nginx、Traefik、HAProxy 等多种 Ingress Controller。可以使用以下命令安装 Nginx Ingress Controller: ``` kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.40.2/deploy/static/provider/cloud/deploy.yaml ``` 2. 创建 Ingress 资源文件,例如: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress spec: rules: - host: example.com http: paths: - path: /foo pathType: Prefix backend: service: name: foo-service port: name: http - path: /bar pathType: Prefix backend: service: name: bar-service port: name: http ``` 上述示例,创建了一个名为 `my-ingress` 的 Ingress 资源,将 `example.com` 上的 `/foo` 和 `/bar` 路径分别映射到名为 `foo-service` 和 `bar-service` 的后端服务上。 3. 使用 `kubectl apply` 命令应用 Ingress 资源文件: ``` kubectl apply -f my-ingress.yaml ``` 4. 配置 DNS 解析,将 `example.com` 解析到 Kubernetes 集群的 Ingress IP 地址上。 5. 配置 TLS,可以使用 Kubernetes 的 Secret 对象来存储 TLS 证书和私钥,然后在 Ingress 资源文件引用: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress annotations: nginx.ingress.kubernetes.io/ssl-cert: "my-tls-secret" spec: tls: - hosts: - example.com secretName: my-tls-secret rules: - host: example.com http: paths: - path: /foo pathType: Prefix backend: service: name: foo-service port: name: http - path: /bar pathType: Prefix backend: service: name: bar-service port: name: http ``` 上述示例,`my-tls-secret` 是存储 TLS 证书和私钥的 Secret 对象的名称。 希望这些步骤对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值