mysql-批量执行优化
本文介绍如何批量执行 mysql 语句。
本文介绍如何批量执行 mysql 语句。
尝试复现问题
1 | CREATE SCHEMA `tmp` DEFAULT CHARACTER SET utf8 COLLATE utf8_danish_ci ; |
1 | CREATE TABLE IF NOT EXISTS `tmp`.`A`( |
接着创建表B。
1 | CREATE TABLE IF NOT EXISTS `tmp`.`B`( |
异常查询。
1 | use tmp; |
出现这个错的原因是相等的两个字段字符集不统一的问题。为了确认这一问题,我们来查看数据库字符集编码.
1 | -- 查看MYSQL数据库服务器和数据库字符集 |
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];MySQL提供的group_concat()函数可以拼接某个字段值成字符串,如 select group_concat(user_name) from sys_user,默认的分隔符是逗号,即,,如果需要自定义分隔符可以使用 SEPARATOR.如:select group_concat(user_name SEPARATOR '_') from sys_user。
但是如果 user_name 拼接的字符串的长度字节超过1024 则会被截断。通过命令show variables like 'group_concat_max_len'来查看group_concat 默认的长度:
1 | mysql> show variables like 'group_concat_max_len'; |
在MySQL配置文件中添加配置:group_concat_max_len = -1 (-1为最大值或根据实际需求设置长度),配置后需要重启MySQL服务,查看如下所示:
1 | mysql> show variables like 'group_concat_max_len'; |
如果是生产环境下,不能擅自重启MySQL服务,则可以通过语句设置group_concat的作用范围,如:
1 | SET GLOBAL group_concat_max_len=-1; |
java命令用于启动JVM虚拟机。Java启动参数分为3种:
有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢?
假设主串target为: a b a c a a b a c a b a c a b a a b b,模式串pattern: a b a c a b(为了方便查看,每个字符间用空格隔开)。
用暴力算法匹配字符串过程中,我们会把target[0]跟 pattern[0] 匹配,如果相同则匹配下一个字符,直到出现不相同的情况,此时我们会丢弃前面的匹配信息,然后把target[1]跟 pattern[0] 匹配,循环进行,直到主串结束,或者出现匹配成功的情况。这种丢弃前面的匹配信息的方法,极大地降低了匹配效率。
以上面的字符为例子:pattern的前5个字符abaca可以匹配target的前5个字符,但是pattern[5]和target[5]不匹配。下面重新从target[1]开始和pattern匹配。
显然效率很差,因为你要把"搜索位置"移到已经比较过的位置,重比一遍。
上下文无关的组成部分:
例如,下面数学表达式:
expr→expr+term
expr→expr−term
expr→term
term→term∗factor
term→term/factor
term→factor
factor→(expr)
factor→id
+,-。Trie树,又称字典树、前缀树、单词查找树、键树,是一种多叉树形结构,是一种哈希树的变种。Trie树典型应用是用于快速检索(最长前缀匹配),统计,排序和保存大量的字符串,所以经常被搜索引擎系统用于文本词频统计,搜索提示等场景。它的优点是最大限度地减少无谓的字符串比较,查询效率比较高。
Trie的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。
google 提出了 Jump consistent hash 算法,跳转一致性哈希不需要存储,速度更快,并且在均匀划分key方面做得更好。它的主要限制是桶必须按顺序编号,这使得它 比分布式 Web 缓存更适合数据存储应用程序
一致性哈希算法是一种特殊的哈希算法, 当目标槽位数量发生变化时,它会尽力降低的重新映射的数量。 传统的哈希表设计中,添加或者删除一个槽位,会造成全量的重新映射, 一致性哈希则追求的是增量式重新映射。