摘要:
set autocommit=0; //设置autocommit为0会取消自动提交 insert into topic_classes values(320,'火箭班','牛逼') --执行了这句话不执行commit并不会提交数据到数据库,只有在自己的会话中可以看到改变了,其实并没有真正的提交,新开一个会话会发现查询不到这个会话提交的内容,如果没有提交的话 COMMIT --执行这个才会把in... 阅读全文
posted @ 2019-12-20 01:00
离地最远的星
阅读(91)
评论(0)
推荐(0)
摘要:
MYISAM在查询时会默认加上读锁,插入时默认加上写锁 读锁 加上后 其他线程可读不可写 写锁加上后 别的线程不能读不能写,要等持锁的session释放锁 表锁一般用在查询为主,只有少量按索引条件更新数据的应用,行锁更适合有大量按索引并发更新少量(因为行锁很耗资源,大量并发更新,会使得资源开销很大)不同数据,又有并发查询的应用 MySQL中的表锁兼容性 请求锁模... 阅读全文
posted @ 2019-12-20 00:59
离地最远的星
阅读(222)
评论(0)
推荐(0)
摘要:
当表很大的时候可以设计冗余字段,避免与大表连表查询造成性能低下 比如日志表和用户表,日志表通常到后期会相当的大可以做一个username的冗余字段,避免查看username的时候去和user表关联 当分页过大时的优化策略 下图的例子是直接使用where去检索一个非索引列,结果是采用全文检索的方式 通过加上order by 索引列把上图查询的type优化成index 使用BTr... 阅读全文
posted @ 2019-12-20 00:58
离地最远的星
阅读(454)
评论(0)
推荐(0)
摘要:
将加锁等等耗时操作都用在主服务器上,数据同步到从服务器,然后查询都去从服务器查,增删改都在主服务器 实现读写分离 主从复制原理 主从复制步骤 主库将所有的写操作记录在binlog日志中,并生成log dump线程,将binlog日志传给从库的I/O线程 从库生成两个线程,一个是I/O线程,另一个是SQL线程 I/O线程去请求主库的binlog日志,并将binlog日志中的文件... 阅读全文
posted @ 2019-12-20 00:58
离地最远的星
阅读(248)
评论(0)
推荐(0)
摘要:
mycat(阿里巴巴搞的一个东西)搞了一个虚拟节点,通过这个虚拟节点对分表和分区的操作就好像是在一张表上进行的 可以设置双主架构避免主从模式下有一台主挂掉了,他们互为主从 mycat都是通过配置schema.xml来配置服务器的 mycat分片查询机制 如果查询是不走指定分片字段id字段,则route路由所有的分片,走所有的分片进行查询,简单的查询走指定分片字段的直接到该分片查询数据,... 阅读全文
posted @ 2019-12-20 00:57
离地最远的星
阅读(232)
评论(0)
推荐(0)
摘要:
来自为知笔记(Wiz) 阅读全文
posted @ 2019-12-20 00:57
离地最远的星
阅读(78)
评论(0)
推荐(0)
摘要:
一:为什么要分表? 如果一个表的每条记录的内容很大,那么就需要更多的IO操作,如果字段值比较大,而使用频率相对比较低,可以将大字段移到另一张表中,当查询不查大字段的时候,这样就减少了I/O操作 如果一个表的数据量很少,那么查询就很快;如果表的数据量非常非常大,那么查询就变的比较慢;也就是表的数据量影响这查询的性能。 表中的数据本来就有独立性,例如分别记录各个地区的数据或者不同时期的数据,特别... 阅读全文
posted @ 2019-12-20 00:56
离地最远的星
阅读(849)
评论(0)
推荐(0)
摘要:
来自为知笔记(Wiz) 阅读全文
posted @ 2019-12-20 00:56
离地最远的星
阅读(243)
评论(0)
推荐(0)
摘要:
首先你要知道; 无论是Myisam和Innodb引擎,如果在建表的时候没有显示的定义一行主键列的话,他内部都会自动创建一个隐藏的主键索引; 主键索引以外的索引假设称为次索引;首先Myisam和Innodb两个都是默认采用的btree索引,可以脑补一颗二叉树; myisam引擎的数据在物理磁盘上是按照顺序存储的,而innodb引擎的表数据是随机分布的; myisam的主键索引的叶子节点只... 阅读全文
posted @ 2019-12-20 00:55
离地最远的星
阅读(1180)
评论(0)
推荐(0)
摘要:
show table status from test //查看test数据库构件情况 select的时候MyISAM明显快于InnoDB,一般用在新闻发布这些,用户登陆这些可能会用到事务的表用innodb 使用唯一索引可以避免重复数据插入,并且还能起到加速查询的作用 sql中变量 select id,username into @gid,@username from user_... 阅读全文
posted @ 2019-12-20 00:52
离地最远的星
阅读(179)
评论(0)
推荐(0)
摘要:
extra属性显示查询用了哪些资源,当select索引列的时候可以看到是使用了索引去查询的速度就很快 下图的查询方式虽然order_by是根据索引去排序的但是select*返回了多个列,有的列不是索引列,所以需要从磁盘中去查询,下图extra是filesort 实战中优化的一些小技巧 查询id用到主键,所以type是const,最好最快的一种,当type是all时是全表扫... 阅读全文
posted @ 2019-12-20 00:51
离地最远的星
阅读(486)
评论(0)
推荐(0)
摘要:
package util import ( "context" "fmt" "go.etcd.io/etcd/clientv3" "time" ) type Service struct { client *clientv3.Client } func NewService() *Service { config := clientv3.Con... 阅读全文
posted @ 2019-12-20 00:50
离地最远的星
阅读(176)
评论(0)
推荐(0)
摘要:
SQL UNION 操作符 SQL UNION 操作符合并两个或多个 SELECT 语句的结果。 SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。 SQL UNION 语法 SEL... 阅读全文
posted @ 2019-12-20 00:50
离地最远的星
阅读(1119)
评论(0)
推荐(0)
摘要:
package util import ( "context" "fmt" "go.etcd.io/etcd/clientv3" "time" ) type Service struct { client *clientv3.Client } func NewService() *Service { config := clientv3.Con... 阅读全文
posted @ 2019-12-20 00:49
离地最远的星
阅读(145)
评论(0)
推荐(0)
摘要:
文件比较少比较小的时候使用文件md5值来监控配置文件 来自为知笔记(Wiz) 阅读全文
posted @ 2019-12-20 00:49
离地最远的星
阅读(401)
评论(0)
推荐(0)
摘要:
实现部分 package util import ( "context" "fmt" "go.etcd.io/etcd/clientv3" "time" ) type Service struct { client *clientv3.Client } func NewService() *Service { config := client... 阅读全文
posted @ 2019-12-20 00:48
离地最远的星
阅读(496)
评论(0)
推荐(0)
摘要:
package util import ( "context" "go.etcd.io/etcd/clientv3" "io/ioutil" "net/http" "regexp" "time" ) type Client struct { client *clientv3.Client Services []*Servi... 阅读全文
posted @ 2019-12-20 00:48
离地最远的星
阅读(566)
评论(0)
推荐(0)
摘要:
package util import ( "math/rand" "time" ) type LoadBalance struct { Servers []*ServiceInfo } func NewloadBalance(servers []*ServiceInfo) *LoadBalance { return &LoadBalance{Servers... 阅读全文
posted @ 2019-12-20 00:47
离地最远的星
阅读(91)
评论(0)
推荐(0)
摘要:
package util import ( "context" "go.etcd.io/etcd/clientv3" "regexp" "time" ) type Client struct { client *clientv3.Client Services []*ServiceInfo } type ServiceInfo struct... 阅读全文
posted @ 2019-12-20 00:47
离地最远的星
阅读(148)
评论(0)
推荐(0)
摘要:
改成动态更新配置文件,如下每五秒重新生成配置文件 confd与etcd的使用 Add keys This guide assumes you have a working etcd, or consul server up and running and the ability to add new keys. /tmp/test-etcd/etcdctl ... 阅读全文
posted @ 2019-12-20 00:46
离地最远的星
阅读(1631)
评论(0)
推荐(0)
摘要:
平滑重启的第三方库overseer package main import ( "crypto/md5" "encoding/hex" "flag" "fmt" "github.com/jpillora/overseer" "gopkg.in/ini.v1" "io" "log" "net/http" "os" ... 阅读全文
posted @ 2019-12-20 00:46
离地最远的星
阅读(313)
评论(0)
推荐(0)
摘要:
使用go初步調用etcd package main import ( "context" "go.etcd.io/etcd/clientv3" "time" ) func main() { config := clientv3.Config{ Endpoints: []string{"106.12.72.181:23791", "106.1... 阅读全文
posted @ 2019-12-20 00:45
离地最远的星
阅读(1016)
评论(0)
推荐(0)
摘要:
package main import ( "context" "flag" "fmt" "github.com/gorilla/mux" uuid "github.com/satori/go.uuid" "goetcd/util" "log" "net/http" "os" "os/signal" "str... 阅读全文
posted @ 2019-12-20 00:45
离地最远的星
阅读(200)
评论(0)
推荐(0)
摘要:
下载etcd代码然后拷贝到服务器 来自为知笔记(Wiz) 阅读全文
posted @ 2019-12-20 00:44
离地最远的星
阅读(598)
评论(0)
推荐(0)
摘要:
docker run -d --name etcd1 --network etcdnet --ip 172.25.0.101 -p 23791:2379 -e ETCDCTL_API=3 -v /root/etcd:/etcd etcd:my etcd --config-file /etcd/conf/etcd.yml curl http://localhost:2... 阅读全文
posted @ 2019-12-20 00:44
离地最远的星
阅读(350)
评论(0)
推荐(0)
摘要:
优雅的启动服务和退出 package main import ( "fmt" "github.com/gorilla/mux" "goetcd/util" "log" "net/http" "os" "os/signal" "strconv" "syscall" ) func main() { router :=... 阅读全文
posted @ 2019-12-20 00:43
离地最远的星
阅读(126)
评论(0)
推荐(0)
摘要:
如上存放一些服务的key到etcd中,商品有两个,主要是为了负载均衡的key func NewService() *Service { config := clientv3.Config{ Endpoints: []string{"106.12.72.181:23791", "106.12.72.181:23792"}, DialTimeout... 阅读全文
posted @ 2019-12-20 00:43
离地最远的星
阅读(436)
评论(0)
推荐(0)
摘要:
/go # etcdctl lease grant 200 //设置一个200秒过期的租约 lease 08e86eea8129eb12 granted with TTL(200s) /go # etcdctl lease timetolive 08e86eea8129eb12 //查看该租约的剩余到期时间 lease 08e86eea8129eb12 granted with TTL(2... 阅读全文
posted @ 2019-12-20 00:42
离地最远的星
阅读(305)
评论(0)
推荐(0)
摘要:
因为是在windows上编译的代码,在linux上不可执行,所以需要交叉编译 package main import ( "flag" "gopkg.in/ini.v1" "log" "net/http" "strconv" ) func main() { port := flag.Int("p", 8080, "服务端口") fl... 阅读全文
posted @ 2019-12-20 00:41
离地最远的星
阅读(182)
评论(0)
推荐(0)
摘要:

评论(0)
推荐(0)
摘要:
package main import ( "github.com/gin-gonic/gin" "net/http" ) type Topic struct { TopicID int } func main() { m := make(map[string]interface{}) m["username"] = "jerry" rout... 阅读全文
posted @ 2019-12-20 00:40
离地最远的星
阅读(166)
评论(0)
推荐(0)
摘要:
{ b:=2 fmt.Println(b) } fmt.Println(b) //这里读取不到上面代码块中的b,花括号可以什么条件都不跟单独为代码块来自为知笔记(Wiz) 阅读全文
posted @ 2019-12-20 00:39
离地最远的星
阅读(120)
评论(0)
推荐(0)
摘要:
package main import ( "github.com/gin-gonic/gin" "topic.jtthink.com/src" ) func main() { router := gin.Default() v1 := router.Group("/v1/topics") { v1.GET("", src.GetTo... 阅读全文
posted @ 2019-12-20 00:38
离地最远的星
阅读(223)
评论(0)
推荐(0)
摘要:
func init() { DBHelper, err = gorm.Open("mysql", "root:root@(115.159.59.129:3306)/test?charset=utf8&parseTime=True&loc=Local") DBHelper.SingularTable(true) DBHelper.DB().SetMaxIdleConns(... 阅读全文
posted @ 2019-12-20 00:38
离地最远的星
阅读(199)
评论(0)
推荐(0)
摘要:
package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { //代码块 router := gin.Default() v1:=router.Group("/v1/topics") { v1.GET("", func(context *gin... 阅读全文
posted @ 2019-12-20 00:37
离地最远的星
阅读(136)
评论(0)
推荐(0)
摘要:
优雅关闭web服务 DBHelper, err = gorm.Open("mysql", "root:root@(115.159.59.129:3306)/test?charset=utf8&parseTime=True&loc=Local") if err != nil { log.Fatal("数据库初始化错误", err) //log.Fatal输出日志并且退出主程... 阅读全文
posted @ 2019-12-20 00:36
离地最远的星
阅读(721)
评论(0)
推荐(0)
摘要:
实现redis缓存装饰器,路由函数 func GetTopicDetail(context *gin.Context) { tid:=context.Param("topic_id") topics:=Topics{} DBHelper.Find(&topics,tid)//从数据库取 context.Set("dbResult",topics) //这里d... 阅读全文
posted @ 2019-12-20 00:36
离地最远的星
阅读(332)
评论(0)
推荐(0)
摘要:
api的url设计规则 router := gin.Default() router.GET("/topic/:topic_id", func(context *gin.Context) { context.String(http.StatusOK,"获取帖子Id为%s",context.Param("topic_id")) }) router.Run() package m... 阅读全文
posted @ 2019-12-20 00:34
离地最远的星
阅读(728)
评论(0)
推荐(0)
摘要:
来自为知笔记(Wiz) 阅读全文
posted @ 2019-12-20 00:34
离地最远的星
阅读(89)
评论(0)
推荐(0)
摘要:
String get(String key) { String value = redis.get(key); if (value == null) { if (redis.setnx(key_mutex, "1")) { //设置分布式锁,同一时刻只能有一个线程能进行此操作 // 3 min timeout to avoid mutex... 阅读全文
posted @ 2019-12-20 00:34
离地最远的星
阅读(1038)
评论(0)
推荐(0)
摘要:
var RedisDefaultPool *redis.Pool func newPool(addr string) *redis.Pool { return &redis.Pool{ MaxIdle: 3, MaxActive: 0, IdleTimeout: 240 * time.Second, Dial: ... 阅读全文
posted @ 2019-12-20 00:33
离地最远的星
阅读(2794)
评论(0)
推荐(0)

浙公网安备 33010602011771号