INSERT INTO 表名(字段1,字段2,......) VALUES (值1,值2,......),(值1,值2,......),(值1,值2,......);
## 登录mysql的时候需要添加--local-infile参数
mysql --local-infile -u root -p
## 登录之后设置local_infile为1,开启从本地加载文件导入数据的开关
set global local_infile=1;
## 使用load命令导入数据
load data local infile '文件' into table `表名` fields terminated by `文件里面的分隔符` lines terminated by '\n';
文件里面的内容格式如下
1,a,b,c
2,b,c,d
PS:主键顺序插入性能高于乱序插入
在InnoDB存储引擎中,表数据都是根据逐渐顺序组织存放的,这种存储方式的表成为索引组织表(index organized table IOT)
页可以为空 ,也可以填充一半,也可以填充100%。每个页包含了2-N行数据(如果 一行数据多大,会溢出),根据主键排列。
当删除一条记录时,实际上记录并没有被物理删除,只是被标记(flaged)为啥暗处并且他的空间变得允许被其他记录声明使用。当页面中删除的记录达到MERGE_THRESHOLD(默认为页的50%),InnoDB会开始寻找最靠近的页(前或后)看看是否可以将两个页合并已优化空间使用。
通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫FileSort排序。
通过有序索引顺序扫描直接返回有序数据,这种情况即为using index,不需要额外排序,操作效率更高。
一般分页查询时,通过创建 覆盖索引 能够比较好的提高性能,可以通过覆盖索引加子查询形式进行优化。
InnoDB引擎会遍历整张表,把每一行的主键id值都取出来,返回给服务层。服务层拿到主键后,直接按行累加(主键不可能为null)。
没有not null约束时: InnoDB疫情会便利整张表把每一行的字段值都取出来,返回给服务层,服务层判断是否为null,不为null,计数累加。
有not null约束时: InnoDB疫情会便利整张表把每一行的字段值都取出来,返回给服务层们直接按行进行累加。
InnoDB疫情遍历整张表,但不取值。服务层对于返回的每一行,放一个数字“1”进去,直接按行累加。
InnoDB疫情并不会把全部字段取出来,而是专门做了优化,不取值,服务层直接按行进行累加。
优化方案
InnoDB的行锁是针对索引加的锁,不是针对记录家的锁,并且该索引不能失效,否则会从行锁升级为表锁。规避这种情况就需要在对应字段创建索引。
]]>进入到Jenkins里面依次点击Manage Jenkins(系统管理) -> Plugin Manager(插件管理) -> Advanced(高级)之后修改Update Site(升级站点)选项的地址,默认地址为:https://updates.jenkins.io/update-center.json是jenkins的官方插件源,下载插件会很慢,建议使用国内的,这里把我他替换成清华大学的源地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,更换好后需要点击submit保存一下之后重启jenkins
插件名称:Localization: Chinese (Simplified)
在Plugin Manager(插件管理)界面点击Available(可选插件),搜索Chinese之后勾选复选框点击"Install without restart"即可安装,这个插件安装好需要重启才可以生效。
安装过程中点击Restart Jenkins那个复选框即可
插件名称:Role-based Authorization Strategy
默认jenkins是没有做用户权限这块的内容的,所以需要这个插件。在Plugin Manager(插件管理)界面点击Available(可选插件),搜索Role-based之后勾选复选框点击"Install without restart"即可安装。安装好之后依次点击Manage Jenkins(系统管理) -> Configure Global Security(全局安全配置),找到授权策略,选择"Role-Based Strategy"项,保存。
之后依次点击 Manage Jenkins(系统管理) -> Manage and Assign Roles(管理和分配角色) -> Manage Roles(管理角色)。
角色(Roles)就可以理解为权限组,进入之后会有三种角色类型,如下表
角色类型 | 作用 |
---|---|
Global Roles | 平台全局的权限 |
Item Roles | 针对项目的权限 |
Node Roles | Jenkins的节点权限 |
关于角色的权限信息对照
全面
权限 | 作用 |
---|---|
Administer | 系统管理员权限 |
Read | 浏览框架(登录) |
代理
权限 | 作用 |
---|---|
Build | 该权限允许用户在代理上允许任务。 |
Configure | 该权限允许用户配置代理。 |
Connect | 该权限允许用户连接代理或者让代理上线。 |
Create | 该权限允许用户创建代理。 |
Delete | 该权限允许用户删除已存在的代理。 |
Disconnect | 该权限允许用户断开或者临时下线代理。 |
Provision | 设置新节点 |
任务
权限 | 作用 |
---|---|
Build | 该权限允许启动一个新的构建任务。 |
Cancel | 该权限允许取消计划或终止运行中的构建任务。 |
Configure | 修改任务的配置。 |
Create | 创建新的任务。 |
Delete | 删除任务。 |
Discover | 该权限允许查找任务。比读取的权限低,当用户试图访问任务时会重定向到登录页面。如果没有该权限,就不能查找工程名称,并会得到404错误。 |
Read | 查看任务。(可以拒绝该权限,但允许发现,迫使匿名用户登录到看到任务) |
Workspace | 该权限允许获取 Jenkins 执行构建任务时检出的工作空间内容。如果你不希望用户通过工作空间浏览器访问工作空间中的文件(例如: SCM 检出的源码或者构建的中间产物),你可以取消该权限。 |
视图
权限 | 作用 |
---|---|
Configure | 该权限允许用户改变视图的配置。 |
Create | 该权限允许用户创建新的视图。 |
Delete | 该权限允许用户删除已有的视图。 |
Read | 该权限允许用户查看视图(允许读取访问)。 |
这里我创建了两个角色一个全局的一个项目的,分配的权限如下图,其中item的角色添加会有一个pattern的一个项,这里面是写正则表达式的,”item01.*“的意思为前缀以item01的项目。最后点击save(保存)
角色创建好之后我们创建一个用户测试一下,依次点击Manage Jenkins(系统管理) -> Manage Users(管理用户) -> Create User(新建用户),创建好之后如下图
之后依次点击 Manage Jenkins(系统管理) -> Manage and Assign Roles(管理和分配角色) -> Assign Roles(指派角色)。把创建的角色添加到全局和项目角色里面,并且勾选刚才创建的角色组里面。记得点击Save(保存)。
此时我们创建一个item01的项目,依次点击New Item(新建任务) -> 输入item01 -> 点击"构建一个自由风格的软件项目" -> OK(确定) -> Save(保存)
此时我们就创建了一个项目,如下图
这个时候退出管理员登录刚才创建的用户,效果如下
插件名称:Credentials Binding
在使用jenkins的时候会有很多的项目需要去pull,会涉及到很多账户的管理,默认jenkins是不提供这方面的管理的。依次点击 Manage Jenkins(系统管理) -> Manage Credentials(凭据) -> global
-> Add Credentials(添加凭据) 可以进行对凭据的管理
类型分别为,Username with password(用户名和密码)、SSH Username with private key(具有私钥的SSH用户名)、Secret file(机密文件)、Secret text(机密文本)、Certificate(证书)
插件名称:Git
安装之前请确保系统里有git这个工具,jenkins的docker会自带git。jenkins默认是没有git克隆代码这个能力的,这个插件完美解决了这个问题。
在项目配置里找到源码管理选择git并添加代码仓库地址保存,例如下图
之后我们运行构建一下,查看一下状态,如下图
]]>