优化器的使用

关于优化器的使用

  • 索引有一个基数的概念,也就是该索引上不同数值的数越多,该索引的区分度越大,基数越大.这个索引一下子能区分的数据就越多.
  • 优化器查询sql执行所要扫描的索引基数,用的就是随机取样法
    • 先取索引树上N页的数据,判断上面有多少基数时,再乘以多少页,就是基数
    • 当索引树上的数据更新量达到1/M的时候,会重新触发一次统计基数,
    • 存储索引统计的方式可以通过innodb_stats_persistent,
      • 设置为on,表示统计信息会持久化存储,N是20,M是10
      • 设置为off,表示统计信息会保存在内存中,N是8,M是16
  • 有时候优化会选择全文检索10w条数据,也不愿选择3w条普通索引,原因是优化器把普通索引的回表操作也计算进这损耗里面,所以有时候优化器会选择错索引的一部分原因就是基数的计算不准确,还有索引评估错误

关于优化器的优化

  • 基数的计算不准确,可以使用analyze table来解决(索引空洞过多,导致基数计算不准确)
  • 如果是索引选择错误
    • 可以使用force index来强行指定走哪个索引
    • 也可以使用改造语句来让优化器来选择索引
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Velo是一个基于Python的开源优化器使用它可以帮助你优化神经网络的权重和偏置参数。下面是使用Velo优化器的一般步骤: 1. 安装Velo 你可以在命令行中使用pip安装Velo,命令如下: ``` pip install velo ``` 2. 导入Velo 在Python脚本中,你需要导入Velo优化器: ```python from velo import Velo ``` 3. 初始化Velo 接下来,你需要根据你的神经网络结构和优化需求,初始化Velo。例如,你可以设置学习率、优化算法、权重衰减等参数: ```python optimizer = Velo(lr=0.01, momentum=0.9, weight_decay=0.001) ``` 4. 定义损失函数 在使用Velo优化器之前,你需要定义损失函数,例如交叉熵: ```python loss_fn = nn.CrossEntropyLoss() ``` 5. 训练模型 最后,你可以使用Velo优化器进行模型训练。以PyTorch为例,训练过程通常如下: ```python # 初始化模型和数据加载器 model = MyModel() train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True) # 定义优化器和损失函数 optimizer = Velo(lr=0.01, momentum=0.9, weight_decay=0.001) loss_fn = nn.CrossEntropyLoss() # 训练模型 for epoch in range(10): for x, y in train_loader: optimizer.zero_grad() output = model(x) loss = loss_fn(output, y) loss.backward() optimizer.step() ``` 这里仅是一个简单的示例,具体的训练过程可能因为你的网络结构和数据集而有所不同。不过,以上步骤应该可以帮助你快速上手使用Velo优化器

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值